兩種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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM