Node.jsでAES暗号化・復号化

Node.jsでAES暗号化・復号化する話。
今回は、AES256bitで行う。
cryptoモジュール使えば簡単にできるのだが、createCipherメソッドだと鍵と初期化ベクトルを指定できない。
代わりにcreateCipherivを使うことでそれらを指定できる。
以下コード。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var cryp = require("crypto");
var key = new Buffer('bFr3r5iRkiTWf3r-a8GsHVZUgpAtDL7X', 'utf8'); //鍵256bit
var iv = new Buffer('5xWAzpRh6TgybfGd', 'utf8');//初期化ベクトル128bit
var text = "あいうえお";
//暗号化
var cipher = cryp.createCipheriv('aes-256-cbc', key, iv);
var encoded = cipher.update(text, 'utf8', 'binary');
encoded += cipher.final('binary');
//復号化
var decipher = cryp.createDecipheriv('aes256', key, iv);
var decoded = decipher.update(encoded, 'binary', 'utf8');
decoded += decipher.final('utf8');
console.log(decoded); //あいうえお