由於JavaScript屬於弱類型腳本語言,因此當其與強類型的後台語言進行數據交互時會產生各種問題,特別是加解密的操作。本人由於工作中遇到用js與Java進行相互加解密的問題,在網上查了很多資料及代碼段,均無法解決。後總結多篇文檔內容終於找到解決辦法,現記錄與此:
下面給大家介紹兩種JavaScript的AES加密方式,具體詳情如下所示:
第一種:加解密時需要秘鑰(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>以上所述是小編給大家介紹的兩種JavaScript的AES加密方式(可與Java相互加解密),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!