Maison  >  Article  >  interface Web  >  Explication détaillée du cryptage aes dans nodejs et javascript

Explication détaillée du cryptage aes dans nodejs et javascript

高洛峰
高洛峰original
2017-01-10 09:19:101257parcourir

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 !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn