Maison >interface Web >js tutoriel >Explication détaillée du cryptage aes dans nodejs et javascript
1. Introduction
1. Le cryptage aes, en termes simples, également connu sous le nom de cryptage Rijndael en cryptographie, est une norme de cryptage par blocs adoptée par le gouvernement fédéral américain. Cette norme est utilisée pour remplacer le DES original. Elle a été analysée par de nombreuses parties et est largement utilisée dans le monde. Advanced Encryption Standard est devenu l’un des algorithmes les plus populaires pour le chiffrement à clé symétrique.
2. La longueur de bloc d'AES est fixée à 128 bits, et la longueur de clé peut être de 128, 192 ou 256 bits tandis que la longueur de clé et de bloc utilisée par Rijndael peut être un multiple entier de 32 bits ; 128 bits est la limite inférieure et 256 bits est la limite supérieure. Y compris AES-ECB, AES-CBC, AES-CTR, AES-OFB, AES-CFB.
3. Ici, nous acceptons uniquement la méthode de cryptage de remplissage pkcs7padding de la BCE couramment utilisée (la même valeur que pkcs5padding).
2. Application
1.Utilisation d'aes dans 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(''); }
2.Utilisation d'aes en javascript
Téléchargez la bibliothèque tierce Adresse git de Crypto-js.js : https://github.com/brix/crypto-js
Introduisez crypto-js.js sous src, le code de cryptage est le suivant :
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));
Ce qui précède est l'ensemble du contenu de cet article qui devrait être utile à l'étude de chacun.
Pour des articles plus détaillés sur le cryptage aes dans nodejs et javascript, veuillez faire attention au site Web PHP chinois !