本文实例讲述了JS加密插件CryptoJS实现AES加密操作。分享给大家供大家参考,具体如下:
最近在做一个项目,考虑到数据的安全性,我们要给数据在传输过程中加密,防止一些恶意的操作以及爬虫抓取数据。
用到的库:CryptoJS 官方地址
:
首先看看这个CryptoJS的目录结构
主要是两个文件夹,components和rollups
第一个是组件,第二个是汇总。
这使得汇总独立的文件夹在你的项目纳入项目文件,而无需担心它的依赖。
你可以在这里查看汇总文件和组件之间的关系:
首先在项目中引入对应的加密文件,我们用的是AES,同时用RequireJS来加载JS,在配置中声明路径: 首先把加密解密封装好为一个模块
解释一下代码:
- 我们加密的模式选的是CBC的,然后填充模式是填充0,这个是前后台约定的,请谨慎。加密秘钥要求是32位长字符串(通过md5加密确保32位,算法限制),iv初始化向量是16位长度的字符串。这两个东西不懂的话,看看AES加密的条件。
- 要注意的是,在加密完成后的字符串是经过Base64加密的,也就是说,后台解密模块必须要求考虑字符编码问题,这个由项目实际来决定。可以把他先转出UTF8的然后再传递给后台。我这里后台是介绍Base64加密后的,所以就不用转码了。
- 解密之后要转成UTF8喔,如果后台给的数据是JSON的话,要用
JSON.parse()
一下才能用。
在代码中调用
支持json格式和字符串格式)
$('#btn_test').click(function () {
var encrypt=hzbAES.encrypt(jsonData);
console.log('前台发过去的数据:'+encrypt);//已加密
$.getJSON(UrlGenerator.url(2,'Home','Index','test'),{'data':encrypt},function (data) {
if(!data['error'])
{
var decrypt=JSON.parse(hzbAES.decrypt(data['data']));
console.log('后台发过来的数据:');//已解密
console.log(decrypt);
}else{
console.log(data['error']);
}
})
});
});
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
在线AES加密/解密工具:
在线编码转换工具(utf-8/utf-32/Punycode/Base64):
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
在线sha1/sha224/sha256/sha384/sha512加密工具:
更多关于JavaScript相关内容可查看本站专题:《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。