位置: IT常识 - 正文
推荐整理分享AES(ECB/CBC) JS实现加密解密(aes-ecb和aes-gcm),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:aes csdn,aes_ecb_encrypt,aes的ecb模式,aes-ecb和aes-gcm,aes代码实现,aes/cbc/nopadding java,aes/cbc/nopadding java,aes/cbc/nopadding java,内容如对您有帮助,希望把文章链接给更多的朋友!
https://github.com/sytelus/CryptoJS
其中 CryptoJS 使用的谷歌开源 https://code.google.com/p/crypto-js/
https://code.google.com/archive/p/crypto-js/downloads
AES对称加密,比DES安全性高。 AES分为ECB和CBC两种方式。 CBC模式比ECB模式安全。 ECB模式比CBC模式快。
CBC加密解密方式下载完成后在页面中引入 rollups/aes.js components/pad-zeropadding.js
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>aes</title> <script src="aes.js"></script> <script src="pad-zeropadding.js"></script></head><body><script type="text/javascript"> CBC(); function CBC() { var key = "0000000671595991"; var iv = "tdrdadq59tbss5n7"; var pazzword = '123456'; console.log('pazzword:' + pazzword); // aes 加密 pazzword = encrypt(pazzword, key, iv); console.log('加密后:' + pazzword); if (pazzword.length == 24) { pazzword = decrypt(pazzword, key, iv); console.log('解密后:' + pazzword); } } // 加密 function encrypt(data, key, iv) { //key,iv:16位的字符串 var key1 = CryptoJS.enc.Latin1.parse(key); var iv1 = CryptoJS.enc.Latin1.parse(iv); return CryptoJS.AES.encrypt(data, key1, { iv: iv1, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }).toString(); } // 解密 function decrypt(data, key, iv) { //key,iv:16位的字符串 var key1 = CryptoJS.enc.Latin1.parse(key); var iv1 = CryptoJS.enc.Latin1.parse(iv); var decrypted = CryptoJS.AES.decrypt(data, key1, { iv: iv1, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }); return decrypted.toString(CryptoJS.enc.Utf8); }</script></body></html>ECB加密解密方式下载完成后在页面中引入 rollups/aes.js components/mode-ecb.js components/pad-zeropadding.js
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>aes</title> <script src="aes.js"></script> <script src="mode-ecb.js"></script> <script src="pad-zeropadding.js"></script></head><body><script type="text/javascript"> ECB(); function ECB() { var key = "0000000671595991"; var iv = "tdrdadq59tbss5n7"; var pazzword = '123456'; console.log('pazzword:' + pazzword); // aes 加密 pazzword = encrypt(pazzword, key, iv); console.log('加密后:' + pazzword); if (pazzword.length == 24) { pazzword = decrypt(pazzword, key, iv); console.log('解密后:' + pazzword); } } // 加密 function encrypt(data, key, iv) { //key,iv:16位的字符串 var key1 = CryptoJS.enc.Latin1.parse(key); var iv1 = CryptoJS.enc.Latin1.parse(iv); return CryptoJS.AES.encrypt(data, key1, { iv: iv1, mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.ZeroPadding }).toString(); } // 解密 function decrypt(data, key, iv) { //key,iv:16位的字符串 var key1 = CryptoJS.enc.Latin1.parse(key); var iv1 = CryptoJS.enc.Latin1.parse(iv); var decrypted = CryptoJS.AES.decrypt(data, key1, { iv: iv1, mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.ZeroPadding }); return decrypted.toString(CryptoJS.enc.Utf8); }</script></body></html>Java实现方式AES对称加密_小百菜的博客-CSDN博客
注意修改代码中的填充方式:
AES/CBC/PKCS5Padding 改为 AES/CBC/NoPaddingAES/ECB/PKCS5Padding 改为 AES/ECB/NoPadding在线测试在线测试http://tool.chacuo.net/cryptaes
上一篇:被阿尔卑斯山环抱的辛特湖,德国贝希特斯加登 (© Offset by Shutterstock)(阿尔卑斯山环保)
友情链接: 武汉网站建设