一、简介
上篇介绍了使用 Java 代码对 AES 这种对称的双向加密技术的具体实现,此篇文章便讲解下 JS 页面的 AES 双向加密技术的实现。
其实在有些场景下,我们需要在前端进行数据的加密和解密,并且有时候会需要和后端进行一些些交互,由于 JavaScript 若类型语言的特性存在,所以经常会出现前后台加密解密后出现数据有差的情况,后来查阅后发现,其实可以使用 CryptoJS 来实现 JS 的 AES 双向加密, easy 啦。
二、实现
其实很简单,我们只需要引入 CryptoJS 文件,然后调用其中方法即可,JS 文件点此 GitHub 地址获取。
加密代码:
CryptoJS.AES.encrypt(word,key).toString();
解密代码:
CryptoJS.AES.decrypt(word,key).toString(CryptoJS.enc.Utf8);
其中,work 是你加密的数据,key 是你的秘钥。另外,你也可以点击此链接在线验证 AES 加密。
三、神来之笔
还有一种是稍复杂一点的,就是除了需要的秘钥之外,还有一个偏移量(iv)。
老规矩,需要的 JS 文件点此 GitHub 地址获取。
代码如下:
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(); }
最后,也提供一个可以在线校验的地址。
四、小结
总结就是,数据都是宝贝,数据都是争夺的资源,数据的加密也是有所必要的(虽然本文介绍的加密技术较为一般,但是能满足一般需求)。
有些大篇幅的详细解释就不贴在此文中了,可以点此链接查看与钻研。
文章评论