两种JavaScript的AES加密方式(可与Java相互加解密)

由于JavaScript属于弱类型脚本语言,因此当其与强类型的后台语言进行数据交互时会产生各种问题,特别是加解密的操作。本人由于工作中遇到用js与Java进行相互加解密的问题,在网上查了很多资料及代码段,均无法解决。后总结多篇文档内容终于找到解决办法,现记录与此:

  第一种:加解密时需要秘钥(key)和秘钥偏移量(iv)的情况,在线验证地址:http://www.seacha.com/tools/aes.html

复制代码

//该方法可与Java进行相互加解密

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>需要秘钥(key)及秘钥偏移量(iv)的aes加解密</title>
</head>
<body>
    <script src="aes_1.js"></script>  //引入的js文件在该链接中:https://github.com/hellobajie/AES-of-JavaScript
    <script>

        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();
        }

        var mm = Encrypt('nihao')
        console.log(mm);
        var jm = Decrypt(mm);
        console.log(jm)
    </script>
</body>
</html>

//如果想要深度了解每步作用,可以参考:http://zhidao.baidu.com/question/647688575019014285.html?qbl=relate_question_0&word=javascript%20aes

复制代码

 

  第二种:加解密时仅需要秘钥,在线验证地址:http://encode.chahuo.com/

复制代码

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>加解密时仅需要秘钥</title>
</head>
<body>
    <script src="aes_2.js"></script>  //引入的js文件在该链接中:https://github.com/hellobajie/AES-of-JavaScript
    <script type="text/javascript">
        var pwd="秘钥";

        function Encrypt(word){
            return CryptoJS.AES.encrypt(word,pwd).toString();
        }

        function Decrypt(word){
            return CryptoJS.AES.decrypt(word,pwd).toString(CryptoJS.enc.Utf8);
        }

        var mm = Encrypt('nihao');
        console.log(mm)
        var jm = Decrypt(mm);
        console.log(jm)
       
    </script>
</body>
</html>

原文https://www.cnblogs.com/hellobajie/p/5726729.html 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值