CryptoJS AES加解密实例

2017年08月23日 10:57 | 4017次浏览 作者原创 版权保护

aes有好几种模式、补码方式,因此参考了好多资料,有一篇写的挺好的,详细的介绍了一下各个步骤,https://zhidao.baidu.com/question/1819427615658816228.html,有想了解的可以看看,我们是用的CBC模式,AES-128bit, Pkcs7补码方式(后台有可能是PKCS5Padding,是一样的),一开始后台设定的key是10位,他们都可以加密和解密,但是我用了就是不行,我觉得肯定是我没有处理好,但是最终实在没办法大家都改成16位,就对了,可以跟后台对上了。

但是前面两个章节下载的CryptoJS包,引用aes.js文件之后,代码一直报错,找了好长时间也没解决,在网上搜了下,发现https://github.com/hellobajie/AES-of-JavaScript 这个地址有aes.js文件,引入之后代码正常运行并解决

直接贴代码

 <!-- V型知识库原创 www.vxzsk.com -->
      <script type="text/javascript" src="aes_1.js"></script>

     
	  

<script type="text/javascript">
//aes加密
function encrypt(word) {
    var key = CryptoJS.enc.Utf8.parse("1234567890000000"); //16位
    var iv = CryptoJS.enc.Utf8.parse("1234567890000000");
    var encrypted = '';
    if (typeof(word) == 'string') {
        var srcs = CryptoJS.enc.Utf8.parse(word);
        encrypted = CryptoJS.AES.encrypt(srcs, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        });
    } else if (typeof(word) == 'object') {//对象格式的转成json字符串
        data = JSON.stringify(word);
        var srcs = CryptoJS.enc.Utf8.parse(data);
        encrypted = CryptoJS.AES.encrypt(srcs, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
        })
    }
    return encrypted.ciphertext.toString();
}
// aes解密
function decrypt(word) {
    var key = CryptoJS.enc.Utf8.parse("1234567890000000"); 
    var iv = CryptoJS.enc.Utf8.parse("1234567890000000");
    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();
}

var wordText="你好";
console.log(encrypt(wordText));
alert(encrypt(wordText));
var jiami=encrypt(wordText);

alert(decrypt(jiami));
   

</script>

加密解密的key和iv必须是一致的,前台后台的加密方式也必须是一致的,不然肯定解不对。因为CryptoJS默认就是CBC模式和Pkcs补码,所以我只用aes.js就可以。

下一章节我会介绍前端aes加密,,后端java解密,敬请期待。



小说《我是全球混乱的源头》
此文章本站原创,地址 https://www.vxzsk.com/1348.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程