Node.jsのcryptoモジュールを利用して、暗号化・復号してみます。
今回は暗号方式にAES192を利用しています。
まずは、暗号化をする部分のプログラムは以下のようになります。
const crypto = require('crypto');
// 暗号化可能な対象を取得する。
var ciphers = crypto.getCiphers();
console.log(ciphers);
// 暗号化用のAES192のインスタンスを生成する。
var cipher = crypto.createCipher('aes192', 'testpassword');
// 暗号化する。入力はUTF-8、出力はBase64にする。
var encrypted = cipher.update('test crypt string. test node.js.', 'utf8', 'base64');
encrypted += cipher.final('base64');
console.log(encrypted);
crypto.getCiphersで利用可能な暗号方式を取得することができます。
今回は出力エンコーディングにBase64を利用していますが、Hex等も利用することができます。
次に、復号プログラムです。
// 復号用のAES192のインスタンスを生成する。
var decipher = crypto.createDecipher('aes192', 'testpassword');
// 復号する。暗号化した際の条件と同じ(入力はBase64、出力はUTF-8)にする。
var decrypted = decipher.update(encrypted, 'base64', 'utf8');
decrypted += decipher.final('utf8');
console.log(decrypted);
復号する際は、暗号化時のエンコーディングと同じものを引数として与えています。