一、简介
上篇介绍了使用 Java 代码对 AES 这种对称的双向加密技术的具体实现,此篇文章便讲解下 JS 页面的 AES 双向加密技术的实现。
其实在有些场景下,我们需要在前端进行数据的加密和解密,并且有时候会需要和后端进行一些些交互,由于 JavaScript 若类型语言的特性存在,所以经常会出现前后台加密解密后出现数据有差的情况,后来查阅后发现,其实可以使用 CryptoJS 来实现 JS 的 AES 双向加密, easy 啦。
二、实现
其实很简单,我们只需要引入 CryptoJS 文件,然后调用其中方法即可,JS 文件点此 GitHub 地址获取。
加密代码:
1 | CryptoJS.AES.encrypt(word,key).toString();```<p> 解密代码:</p> |
CryptoJS.AES.decrypt(word,key).toString(CryptoJS.enc.Utf8);<p> 其中,work 是你加密的数据,key 是你的秘钥。另外,你也可以点击此<a href="http://encode.chahuo.com/" target="_blank"><strong>链接</strong></a>在线验证 AES 加密。</p><h2>三、神来之笔<br/></h2><p> 还有一种是稍复杂一点的,就是除了需要的秘钥之外,还有一个偏移量(iv)。</p><p> 老规矩,需要的 JS 文件点此 <a href="https://github.com/goldenJet/AES-Java-JavaScript/blob/master/src/main/resources/static/js/aes_key_iv.js" target="_blank"><strong>GitHub </strong></a>地址获取。</p><p> 代码如下:<br/></p>
var key = CryptoJS.enc.Utf8.parse(“十六位十六进制数作为秘钥”);
var iv = CryptoJS.enc.Utf8.parse('十六位十六进制数作为秘钥偏移量');
// 加密方法
function Encrypt(word){
srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});
return encrypted.ciphertext.toString().toUpperCase();
}
// 解密方法
function Decrypt(word){
var encryptedHexStr = CryptoJS.enc.Hex.parse(word);
var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
var decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7}); var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}```
最后,也提供一个可以在线校验的地址。
四、小结
总结就是,数据都是宝贝,数据都是争夺的资源,数据的加密也是有所必要的(虽然本文介绍的加密技术较为一般,但是能满足一般需求)。
有些大篇幅的详细解释就不贴在此文中了,可以点此链接查看与钻研。