I don't know about 7.4, but this works in 7.6 at least:
Crypto.CBC cbc = Crypto.CBC(Crypto.AES); cbc->set_encrypt_key(Stdio.read_file(argv[1])); string iv = Crypto.Random.random_string(cbc->block_size()); cbc->set_iv(iv); string cleardata = Stdio.read_file(argv[2]); int pad = strlen(cleardata)%cbc->block_size(); if(pad) { pad = cbc->block_size()-pad; cleardata += "\0"*pad; } string cryptdata = ""; foreach(cleardata / (cbc->block_size()*4096.0), string blk) cryptdata += cbc->crypt(blk);
The reason for the loop is that the crypto module will crash if you try to encrypt too much data at once...