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 중국어 홈페이지를 참고해주세요!