本文给出了一个用JS加密插件CryptoJS实现AES加密操作的实例。分享给大家参考,如下:
最近,我们正在做一个项目。考虑到数据的安全性,我们需要在传输过程中对数据进行加密,防止一些恶意操作和爬虫抓取数据。
库使用:CryptoJS官方地址:https://code.google.com/archive/p/crypto-js/首先看一下这个CryptoJS的目录结构
主要有两个文件夹,组件和汇总
第一个是组件,第二个是总结。
拼接一个或多个组件文件夹后,摘要文件夹中的文件将被压缩。
这使得可以将项目中的单独文件夹聚合到项目文件中,而不用担心其依赖性。
您可以在此处查看摘要文件和组件之间的关系:
https://code . Google.com/p/crypto-js/source/browse/tags/3 . 1 . 2/builder/build . yml
首先在项目中引入对应的加密文件,我们使用AES,并使用RequireJS加载JS,并在配置中声明路径:
require . config({ baseerls : '/Public/Home/Js/lib ',路径: { hzbaes 3360 './module/hzb。AES ' } });首先,加密和解密被封装到一个模块中
//模块初始化vari nit=function(){ key=crypto js . enc . utf8 . parse(crypto js . MD5(ym . hezubao))。tostring());iv=crypto js . enc . utf8 . parse(crypto js。MD5(密钥)。toString()。substr(0,16));}函数encrypt(data){ var encrypted=' ';if(type of(data)==' string '){ encrypted=crypto js。AES.encrypt(数据,密钥,{ iv : iv,mode : CryptoJS.mode.CBC,padding : crypto js . pad . zero padding });} else if(type of(data)=' object '){ data=JSON . stringify(data);加密=CryptoJS。AES.encrypt(data,key,{ iv : iv,mode : CryptoJS.mode.CBC,padding : cryptojs . pad . zero padding })}返回encrypted . tostring();}/*AES解密* param :消息密文*返回:解密字符串明文*/functiondecrypt(消息){ decrypted=解密=CryptoJS。AES.decrypt(message,key,{ iv : iv,mode : CryptoJS.mode.CBC,padding : crypto js . pad . zero padding });返回解密的. tostring(cryptojs . enc . utf8);}解释代码:
我们的加密模式是CBC,然后填充模式是0。这是前后办公室都同意的,所以请小心。要求加密密钥为32位长字符串(md5加密保证32位,受算法限制),iv初始化向量为16位长字符串。如果不明白这两点,看看AES加密的条件。需要注意的是,加密的字符串是用Base64加密的,也就是说后台解密模块必须考虑字符编码问题,这是由实际项目决定的。你可以先把他转出UTF8,然后把他传到后台。这里我在后台介绍了Base64加密,所以不需要转码。解密后,应该转换为UTF8。如果后台给出的数据是JSON,那么只能使用JSON.parse()。在代码中调用
Require (['hzbaes'],function(hzbaes){ var JSON data={ ' ID ' :2,' username ' : ' spring bear ' };//json格式数据(加密支持json格式和字符串格式)$ ('# BTN _ test ')。单击(function () {var encrypt=hzbaes。加密(JSON数据);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(数据[' error ']);} }) });});PS:对加解密感兴趣的朋友也可以参考本网站的在线工具:
在线AES加密/解密工具:http://tools.jb51.net/password/aes_encode
文本在线加解密工具(包括AES、DES、RC4等。)http://tools.jb51.net/password/txt_encode
在线编码转换工具(utf-8/utf-32/punycode/base64):http://tools.jb51.net/transcoding/decode_encode_tool
BASE64编码和解码工具:http://tools.jb51.net/transcoding/base64
在线MD5/哈希/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:http://tools.jb51.net/password/hash_md5_sha
在线sha1/sha 224/sha 256/sha 384/sha 512加密工具:http://tools.jb51.net/password/sha_encode
有关JavaScript的更多信息,请参见本网站的主题:《JavaScript加密解密技巧汇总》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》和0103010。
希望本文对JavaScript编程有所帮助。