var cryptor = require('crypto');
var crypto_key = 'password';
var m = cryptor.createHash('sha256');
m.update(crypto_key);
crypto_key = m.digest('binary');
var crypto_iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f';
var ciper_mode = 'aes-256-cbc';
var text = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
// 暗号化
var cipher = cryptor.createCipheriv(ciper_mode, crypto_key, crypto_iv);
var enc_text = cipher.update(text, 'utf-8', 'base64');
enc_text += cipher.final('base64');
// 復号化
var decipher = cryptor.createDecipheriv(ciper_mode, crypto_key, crypto_iv);
var dec = decipher.update(enc_text, 'base64', 'utf8');
dec += decipher.final('utf8');
console.log(text);
ポイントは、鍵長が256でなければならないのでキーをSHA256ハッシュ化していることと、ivという初期化ベクターを与える必要があるということ。
情報間違っていたので一部修正しました。
cipher.update()にインプットのエンコードとアウトプットのエンコードを渡せるので、インプットとして文字列(UTF-8)を指定し、アウトプットはBASE64にしました。
decipher.update()はその逆です。
インプットやアウトプットをバイナリにしたい場合は「'binary'」を指定します。