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...