ホームページ >ウェブフロントエンド >jsチュートリアル >NodejsとJavaScriptにおけるaes暗号化の詳しい説明

NodejsとJavaScriptにおけるaes暗号化の詳しい説明

高洛峰
高洛峰オリジナル
2017-01-10 09:19:101267ブラウズ

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 サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。