node.js でAES暗号を使ってみる
概要
MacRat 氏が「OpenSSLを使ってC言語でAES暗号」という記事を書いたので、LL言語版で書いてみる。node.js で AES 暗号を使用してみます。
この記事は、【Node.js】cryptを使って共通鍵暗号方式の使い方 を参考に作られております。
暗号化
node.js は内蔵モジュールに暗号モジュールがあるので npm をしなくても平気、便利、C言語で OpenSSL 叩くために英文を頑張って読みまくる必要ない!!var crypto = require("crypto"); var key = "abcdefghijklmnop"; var data = "hello, OpenSSL! 123456789012345"; // OpenSSL ではなく node.js の内蔵モジュールを使用しているのだけども。。。 // 暗号化 var cipher = crypto.createCipher("AES-128-CBC", key); var crypted = cipher.update(data, "utf-8", "hex"); crypted += cipher.final("hex"); console.log(crypted); // b95c19452d6cce9adc5e13cd3dc38b4fc987964bb1c138f40fb05c797160ad7d
復号化
var crypto = require("crypto"); var key = "abcdefghijklmnop"; // 復号化 var decipher = crypto.createDecipher("AES-128-CBC", key); var dec = decipher.update("b95c19452d6cce9adc5e13cd3dc38b4fc987964bb1c138f40fb05c797160ad7d", "hex", "utf-8"); dec += decipher.final("utf-8"); console.log(dec); // hello, OpenSSL! 123456789012345
ソースコード
"use strict"; var crypto = require("crypto"); var key = "abcdefghijklmnop"; var data = "hello, OpenSSL! 123456789012345"; // OpenSSL ではなく node.js の内蔵モジュールを使用しているのだけども。。。 // 暗号化 var cipher = crypto.createCipher("AES-128-CBC", key); var crypted = cipher.update(data, "utf-8", "hex"); crypted += cipher.final("hex"); // 復号化 var decipher = crypto.createDecipher("AES-128-CBC", key); var dec = decipher.update(crypted, "hex", "utf-8"); dec += decipher.final("utf-8"); console.log("CRYPTED : " + crypted); console.log("DECRYPTED : " + dec);Console
CRYPTED : b95c19452d6cce9adc5e13cd3dc38b4fc987964bb1c138f40fb05c797160ad7d DECRYPTED : hello, OpenSSL! 123456789012345
感想
node.js で AES 暗号を処理するコードを残してくれた先人に感謝。。。そして、LL言語だとやはり簡単にできるからいい
以上
参考【Node.js】cryptを使って共通鍵暗号方式の使い方