node.js で Camellia 暗号を使ってみる
概要
前回「node.js でAES暗号を使ってみる」という記事を書いていた時に、はるか昔に書いたCamellia暗号を C言語で利用する記事を書いたのを思い出したので node.js でCamellia暗号を使ってみる。「CamelliaをC言語に組み込むまで」Camellia暗号とはなにか?
Camellia暗号とは三菱電気とNTTのすごい方々が開発してくれた、しかも電子政府推奨暗号リスト掲載されている国産のブロック暗号アルゴリズムです。AES 暗号と同等の暗号強度を持つそうです。
暗号化
node.js の内蔵モジュールにCamellia暗号が含まれているのでそれを使用します。var crypto = require("crypto");
var key = "abcdefghijklmnop";
var data = "hello, OpenSSL! 123456789012345"; // OpenSSL ではなく node.js の内蔵モジュールを使用しているのだけども。。。
// 暗号化
var cipher = crypto.createCipher("CAMELLIA-128-CBC", key);
var crypted = cipher.update(data, "utf-8", "hex");
crypted += cipher.final("hex");
console.log(crypted); // 051a3b8c5557949755809b51ebae1041faf0eb2c5bbe97f2ccd7d75fcc0ecd30
復号化
var crypto = require("crypto");
var key = "abcdefghijklmnop";
// 復号化
var decipher = crypto.createDecipher("CAMELLIA-128-CBC", key);
var dec = decipher.update("051a3b8c5557949755809b51ebae1041faf0eb2c5bbe97f2ccd7d75fcc0ecd30", "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("CAMELLIA-128-CBC", key);
var crypted = cipher.update(data, "utf-8", "hex");
crypted += cipher.final("hex");
// 復号化
var decipher = crypto.createDecipher("CAMELLIA-128-CBC", key);
var dec = decipher.update(crypted, "hex", "utf-8");
dec += decipher.final("utf-8");
console.log("CRYPTED : " + crypted);
console.log("DECRYPTED : " + dec);
ConsoleCRYPTED : 051a3b8c5557949755809b51ebae1041faf0eb2c5bbe97f2ccd7d75fcc0ecd30 DECRYPTED : hello, OpenSSL! 123456789012345
感想
Camellia暗号も内蔵モジュールに含まれている node.js すごい。
以上
参考【Node.js】cryptを使って共通鍵暗号方式の使い方
CamelliaをC言語に組み込むまで