スキップしてメイン コンテンツに移動

node.js でAES暗号を使ってみる

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を使って共通鍵暗号方式の使い方

このブログの人気の投稿

記述試験の書き方(仮)

記述試験の書き方(仮) 1,まえがき   法学部の試験では記述式の試験が出てくる。   その試験では、あるテーマについて自由に論ぜよとされている。 しかし、論ぜよと言われても、どのように論じればいいのか、すなわち、記述の仕方について教わったことがない(よくよく考えると、法的文章力を習得させる事だけが目的の授業はないと思われる)。   本稿では、私自身が法学畜になり、見聞きし、実際に活用している論述方法についてまとめている、はずである。その要点は、①条文、判例、学説を使う。②単なる事実と法的事実を区別する。③文章内に一貫性を持たせる。である。 法律と、プログラミング

本サイトの今後について

告知 本サイトは今後更新されることは、おそらくありません。 過去記事等はこのまま放置するつもりです。内容の陳腐化並びにその正確性等については保証はできません。自己責任で活用いただければと思います。 This site won't update in future. And Thank's everyone. new site -> sysrigar

node.js で SQLite3 を使用するコードを書くときの予備録

node.js で SQLite3 を使用するコードを書くとき、予備録 まず、非同期処理。 C言語や Perl のように上から下に処理が続くと決して思ってはいけない。 SQLite3 の each は SQL 文実行完了時に呼び出す関数を指定できる SQLite をインストールします、 npm install sqlite3 [test.js] var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database(':memory:'); db.serialize(function() { db.run("CREATE TABLE lorem (info TEXT)"); var stmt = db.prepare("INSERT INTO lorem VALUES (?)"); for (var i = 0; i 結果 [ROW] 1: Ipsum 0 [ROW] 2: Ipsum 1 [ROW] 3: Ipsum 2 [ROW] 4: Ipsum 3 [ROW] 5: Ipsum 4 [ROW] 6: Ipsum 5 [ROW] 7: Ipsum 6 [ROW] 8: Ipsum 7 [ROW] 9: Ipsum 8 [ROW] 10: Ipsum 9 [BUF] 1: Ipsum 0 [BUF] 2: Ipsum 1 [BUF] 3: Ipsum 2 [BUF] 4: Ipsum 3 [BUF] 5: Ipsum 4 [BUF] 6: Ipsum 5 [BUF] 7: Ipsum 6 [BUF] 8: Ipsum 7 [BUF] 9: Ipsum 8 [BUF] 10: Ipsum 9 Finish. まぁ見れば分かる通り、each 関数の第三引数を指定しただけなんだけどね。 Database#each(sql, [param, ...], [callback], [complete]) https://github.com/mapbox/node-sqlite3...