>  기사  >  웹 프론트엔드  >  nodejs 및 javascript의 AES 암호화에 대한 자세한 설명

nodejs 및 javascript의 AES 암호화에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-01-10 09:19:101256검색

1. 소개

1. 간단히 말해서 암호화 분야의 Rijndael 암호화라고도 하는 aes 암호화는 미국 연방 정부에서 채택한 블록 암호화 표준입니다. 이 표준은 원래 DES를 대체하는 데 사용되었으며 많은 당사자에서 분석되었으며 전 세계적으로 널리 사용됩니다. 고급 암호화 표준(Advanced Encryption Standard)은 대칭 키 암호화에 가장 널리 사용되는 알고리즘 중 하나가 되었습니다.

2. AES의 블록 길이는 128비트로 고정되어 있으며 키 길이는 128, 192 또는 256비트일 수 있으며 Rijndael에서 사용하는 키와 블록 길이는 32비트의 정수배일 수 있습니다. 128비트가 하한이고 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 중국어 홈페이지를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.