JavaScript实现的前端AES加密解密功能【基于CryptoJS】
本文实例讲述了javascript实现的前端aes加密解密功能。分享给大家供大家参考,具体如下:
js前端aes加密
最近由于项目需求做了一次mitm,突然即使发现使用https,也不能保证数据传输过程中的安全性。 通过中间人攻击,可以直接获取到http协议的所有内容。 于是开始尝试做一些简单的加密,在一定程度上保证安全性。
本次采用aes加密数据,所以客户端和服务端使用的相同秘钥。(仅作为演示,正式环境推荐使用rsa)
首先准备一份明文密码和加密使用的key
var source = "abcdefg"; var aeskey = "8nonwyjthesyswpm";
js加密 padding和mode 需要与服务端相对应,否则无法解密
key 为字符串类型,需要处理完再使用
注:pkcs5padding 和 pkcs7padding 是一样的
上段所示的 encrypteddata 即为加密后的结果。
js解密代码
encrypteddata 为加密后的数据,
直接通过js加密后的数据是一个对象,无法直接解密的, 需要转换为base64的字符串后才可解密
服务端应当返回base64之后的加密数据
encrypteddata = encrypteddata.ciphertext.tostring(); var encryptedhexstr = cryptojs.enc.hex.parse(encrypteddata);
先来看看运行结果:
aes.js文件可点击此处本站下载。
完整测试代码如下:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>www.jb51.net aes.js</title> </head> <script src="aes.js"></script> <body> <script> var key = cryptojs.enc.utf8.parse("8nonwyjthesyswpm"); var plainttext = 'abcdefgh'; // 明文 var encrypteddata = cryptojs.aes.encrypt(plainttext, key, { mode: cryptojs.mode.ecb, padding: cryptojs.pad.pkcs7 }); console.log("加密前:"+plainttext); console.log("加密后:"+encrypteddata); encrypteddata = encrypteddata.ciphertext.tostring(); var encryptedhexstr = cryptojs.enc.hex.parse(encrypteddata); var encryptedbase64str = cryptojs.enc.base64.stringify(encryptedhexstr); var decrypteddata = cryptojs.aes.decrypt(encryptedbase64str, key, { mode: cryptojs.mode.ecb, padding: cryptojs.pad.pkcs7 }); var decryptedstr = decrypteddata.tostring(cryptojs.enc.utf8); console.log("解密后:"+decryptedstr); var pwd = "pcsuftgog9/qpqmqxsucrq=="; //加密服务端返回的数据 var decrypteddata = cryptojs.aes.decrypt(pwd, key, { mode: cryptojs.mode.ecb, padding: cryptojs.pad.pkcs7 }); console.log("解密服务端返回的数据:"+decryptedstr); </script> </body> </html>
代码中带入aes.js完整代码,使用在线html/css/javascript代码运行工具:http://tools.jb51.net/code/htmljsrun,可得到上述运行结果。
ps:关于加密解密感兴趣的朋友还可以参考本站在线工具:
在线aes加密/解密工具:
文字在线加密解密工具(包含aes、des、rc4等):
在线编码转换工具(utf-8/utf-32/punycode/base64):
base64编码解码工具:
在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:
在线sha1/sha224/sha256/sha384/sha512加密工具:
更多关于javascript相关内容可查看本站专题:《javascript加密解密技巧汇总》、《javascript查找算法技巧总结》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结》
希望本文所述对大家javascript程序设计有所帮助。
上一篇: SCCM 2012安装图解教程(一步一步详细步骤)
下一篇: 探讨Ajax中同步与异步之间的区别
推荐阅读