cryptojs aes 加密 解密
最近在做微信公众号开发,在与后台的交互中,需要用到 aes,期间也碰到一些问题,在此分享一下自己踩过的坑。
使用cryptojs,这样一个库。
- 与后台的交互,首先需要确定后台 aes 采用的算法,我的项目中采用的是AES/ECB/PKCS5Padding “算法/模式/补码方式”,因此 js 中也要采用同样的算法,不然前端跟后台无法通信。
- 确定好了加密方式之后,js 引入库文件时。只引入 aes.js 的话,采用 CBC模式不会有问题,可是采用 ECB 模式会报错,需要额外引入另外2个js文件 ,mode-ecb-min.js
pad-nopadding-min.js - 官方示例, 每次输出的密文都不一样,CryptoJS.AES.encrypt(“Message”, “Secret Passphrase”),需要先自己转换一下
- http://download.csdn.net/detail/on_the_way_to_travel/9464291 js库的下载地址
最后贴代码
<script src="js/cryptojs/rollups/aes.js"></script>
<script src="js/cryptojs/components/mode-ecb-min.js"></script>
<script src="js/cryptojs/components/pad-nopadding-min.js"></script>
<script type="text/javascript">
function aesEncrypt(data, key) {
var encrypted = CryptoJS.AES.encrypt(data, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
function aesDecrypt(encrypted, key) {
var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
decrypted = CryptoJS.enc.Utf8.stringify(decrypted);// 转换为 utf8 字符串
return decrypted;
}
function print(string)
{
document.write(string + "<br>");
}
var key = "0123456789abcdef";//16位
key = CryptoJS.enc.Utf8.parse(key);
var encrypted = aesEncrypt("1111", key);
var decrypt = aesDecrypt(encrypted.toString(), key);
print("aes ecb 加密 解密");
print("加密的密文:".concat(encrypted));
print("解密密文的结果:" + decrypt);
</script>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。