介绍
这篇文章将为大家详细讲解有关JavaScript怎么实现的前端AES加密解密功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
<强> js前端AES加密强>
最近由于项目需求做了一次MITM,突然即使发现使用HTTPS,也不能保证数据传输过程中的安全性。通过中间人攻击,可以直接获取到Http协议的所有内容。于是开始尝试做一些简单的加密,在一定程度上保证安全性。
本次采用AES加密数据,所以客户端和服务端使用的相同秘钥。(仅作为演示,正式环境推荐使用RSA)
首先准备一份明文密码和加密使用的关键
var source =,“ABCDEFG"; var aesKey =,“8 nonwyjthesyswpm"
JS加密填充和模式需要与服务端相对应,否则无法解密
为关键字符串类型,需要处理完再使用
注:PKCS5Padding和PKCS7Padding是一样的
上段所示的encryptedData即为加密后的结果。
<强> JS解密代码强>
encryptedData为加密后的数据,
直接通过JS加密后的数据是一个对象,无法直接解密的,需要转换为Base64的字符串后才可解密
服务端应当返回Base64之后的加密数据
encryptedData =, encryptedData.ciphertext.toString (); var encryptedHexStr =, CryptoJS.enc.Hex.parse (encryptedData);
先来看看运行结果:
,
AES。js文件可点击此处<强>本站下载强>。
<强>完整测试代码如下:强>
& lt; ! DOCTYPE html> & lt; html  lang=癳n"祝辞 & lt; head> & lt;才能meta charset=癠TF-8"比; & lt;才能title> www.jb51.net  aes.js & lt;/head> & lt; https://www.yisu.com/zixun/script src=" aes.js "> 脚本> <身体> <>脚本 var关键=CryptoJS.enc.Utf8.parse (“8 nonwyjthesyswpm”); var plaintText=癆BCDEFGH”;//明文 var encryptedData=CryptoJS.AES。加密(plaintText键,{ 模式:CryptoJS.mode.ECB, 填充: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键,{ 模式:CryptoJS.mode.ECB, 填充:CryptoJS.pad.Pkcs7 }); var decryptedStr=decryptedData.toString (CryptoJS.enc.Utf8); console.log(“解密后:“+ decryptedStr); var pwd=癙CsUFtgog9/qpqmqXsuCRQ==?//加密服务端返回的数据 var decryptedData=CryptoJS.AES.decrypt (pwd,钥匙,{ 模式:CryptoJS.mode.ECB, 填充:CryptoJS.pad.Pkcs7 }); console.log(“解密服务端返回的数据:“+ decryptedStr);> 脚本 身体>