- aes-128-ecb は単純なアルゴリズムらしく ivが不要。他の暗号利用モードのときにはivが必要そう。
- update()とfinal()の挙動は、ブロックのサイズを跨いだ時に変化してるっぽい。
- 動かし方: node ./crypto.js
- リンク:
Last active
May 24, 2020 05:35
-
-
Save taktamur/0d64d8e412d07d7c5508190d22375c9b to your computer and use it in GitHub Desktop.
node.jsで暗号化と復号の実験
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const crypto = require("crypto"); | |
const algorithm = "aes-128-ecb"; //ecbモードは前のブロックを使わない単純な暗号利用モードらしい。なのでivが不要 | |
const key = "keykeykeykeykeyk"; // keyは16バイトきっちり必要 | |
const cipher = crypto.createCipheriv(algorithm, key, null); // aes-128-ecbの場合、iv指定が不要(使わないから) | |
let encrypted = cipher.update("1234567890123456", "utf8", "hex"); // utf8->hex | |
console.log(encrypted); // 平文が15バイトだと、ここは空出力になる。16バイトあると出力される | |
encrypted += cipher.final("hex"); | |
console.log(encrypted); | |
const decipher = crypto.createDecipheriv(algorithm, key, null); | |
let decrypted = decipher.update(encrypted, "hex", "utf-8"); // hex -> utf-8 | |
console.log(decrypted); // 平文が15バイトだと、ここは空出力になる。16バイトあると出力される | |
decrypted += decipher.final("utf-8"); | |
console.log(decrypted); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment