ホームページ >ウェブフロントエンド >jsチュートリアル >NodejsとJavaScriptにおけるaes暗号化の詳しい説明
1. はじめに
1.aes 暗号化は、簡単に言えば、暗号化におけるラインダール暗号化とも呼ばれ、米国連邦政府によって採用されたブロック暗号化標準です。この標準は、元の DES を置き換えるために使用され、多くの関係者によって分析され、世界中で広く使用されています。 Advanced Encryption Standard は、対称キー暗号化の最も人気のあるアルゴリズムの 1 つになりました。
2. AES のブロック長は 128 ビットに固定されており、キーの長さは 128、192、または 256 ビットにすることができますが、Rijndael で使用されるキーとブロックの長さは 32 ビットの整数倍にすることができます。下限は 256 ビットが上限です。 AES-ECB、AES-CBC、AES-CTR、AES-OFB、AES-CFBを含みます。
3. ここでは、一般的に使用される ECB 方式 + pkcs7padding (pkcs5padding と同じ値) パディング暗号化のみを受け入れます。
2. アプリケーション
1.nodejs での aes の使用
var crypto = require('crypto'); var aesutil = module.exports = {}; /** * aes加密 * @param data 待加密内容 * @param key 必须为32位私钥 * @returns {string} */ aesutil.encryption = function (data, key, iv) { iv = iv || ""; var clearEncoding = 'utf8'; var cipherEncoding = 'base64'; var cipherChunks = []; var cipher = crypto.createCipheriv('aes-256-ecb', key, iv); cipher.setAutoPadding(true); cipherChunks.push(cipher.update(data, clearEncoding, cipherEncoding)); cipherChunks.push(cipher.final(cipherEncoding)); return cipherChunks.join(''); } /** * aes解密 * @param data 待解密内容 * @param key 必须为32位私钥 * @returns {string} */ aesutil.decryption = function (data, key, iv) { if (!data) { return ""; } iv = iv || ""; var clearEncoding = 'utf8'; var cipherEncoding = 'base64'; var cipherChunks = []; var decipher = crypto.createDecipheriv('aes-256-ecb', key, iv); decipher.setAutoPadding(true); cipherChunks.push(decipher.update(data, cipherEncoding, clearEncoding)); cipherChunks.push(decipher.final(clearEncoding)); return cipherChunks.join(''); }
2. JavaScript での aes の使用
サードパーティ ライブラリ Crypto-js.js の git アドレスをダウンロードします: https://github.com/brix/ crypto-js
src の下に crypto-js.js を導入します。暗号化コードは次のとおりです:
var key = "12345678" //秘钥必须为:8/16/32位 var message = "123456"; //加密 var encrypt = CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(key), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); console.log("value: "+encrypt); //解密 var decrypt = CryptoJS.AES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(key), { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); console.log("value: "+decrypt.toString(CryptoJS.enc.Utf8));
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。
nodejs と JavaScript の aes 暗号化に関連する詳細な記事については、PHP 中国語 Web サイトに注目してください。