Heim > Web-Frontend > js-Tutorial > Detaillierte Erläuterung der AES-Verschlüsselung in NodeJS und Javascript

Detaillierte Erläuterung der AES-Verschlüsselung in NodeJS und Javascript

高洛峰
Freigeben: 2017-01-10 09:19:10
Original
1310 Leute haben es durchsucht

1. Einleitung

1. AES-Verschlüsselung, in der Kryptographie auch als Rijndael-Verschlüsselung bekannt, ist ein von der US-Bundesregierung übernommener Blockverschlüsselungsstandard. Dieser Standard ersetzt den ursprünglichen DES. Er wurde von vielen Parteien analysiert und ist weltweit weit verbreitet. Advanced Encryption Standard hat sich zu einem der beliebtesten Algorithmen für die Verschlüsselung mit symmetrischen Schlüsseln entwickelt.

2. Die Blocklänge von AES ist auf 128 Bit festgelegt und die Schlüssellänge kann 128, 192 oder 256 Bit betragen, während die von Rijndael verwendete Schlüssel- und Blocklänge ein ganzzahliges Vielfaches von 32 Bit sein kann. 128 Bit ist die Untergrenze und 256 Bit die Obergrenze. Einschließlich AES-ECB, AES-CBC, AES-CTR, AES-OFB, AES-CFB.

3. Hier akzeptieren wir nur die häufig verwendete ECB-Methode + pkcs7padding (derselbe Wert wie pkcs5padding)-Padding-Verschlüsselung.

2. Anwendung

1.Verwendung von AES in NodeJS

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('');
}
Nach dem Login kopieren

2.Verwendung von AES in Javascript

Laden Sie die Bibliothek eines Drittanbieters herunter Crypto-js.js-Git-Adresse: https://github.com/brix/crypto-js

Fügen Sie crypto-js.js unter src ein. Der Verschlüsselungscode lautet wie folgt:

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));
Nach dem Login kopieren

Das Obige ist Der gesamte Inhalt dieses Artikels soll für das Studium aller hilfreich sein.

Ausführlichere Artikel zur AES-Verschlüsselung in NodeJS und Javascript finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage