javascript
nodejs与javascript中的aes加密
簡(jiǎn)介
1.aes加密簡(jiǎn)單來(lái)說(shuō),在密碼學(xué)中又稱Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。高級(jí)加密標(biāo)準(zhǔn)已然成為對(duì)稱密鑰加密中最流行的算法之一。
2.AES的區(qū)塊長(zhǎng)度固定為128 比特,密鑰長(zhǎng)度則可以是128,192或256比特;而Rijndael使用的密鑰和區(qū)塊長(zhǎng)度可以是32位的整數(shù)倍,以128位為下限,256比特為上限。包括AES-ECB,AES-CBC,AES-CTR,AES-OFB,AES-CFB。
具體的加密算法和模式的區(qū)別:點(diǎn)擊《AES加解密算法的模式介紹》查看。
3.在這里我們只接受常用的ECB方式 + pkcs7padding(與pkcs5padding值相同)填充加密。
?
應(yīng)用
1.nodejs中aes的使用
var crypto = require('crypto');var aesutil = module.exports = {};/*** aes加密* @param data 待加密內(nèi)容* @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 待解密內(nèi)容* @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的使用
下載第三方庫(kù)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));?
總結(jié)
以上是生活随笔為你收集整理的nodejs与javascript中的aes加密的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 练习题P256
- 下一篇: Springboot遇到的问题