兩種JavaScript的AES加密方式(可與Java相互加解密)
由于JavaScript屬于弱類型腳本語(yǔ)言,因此當(dāng)其與強(qiáng)類型的后臺(tái)語(yǔ)言進(jìn)行數(shù)據(jù)交互時(shí)會(huì)產(chǎn)生各種問(wèn)題,特別是加解密的操作。本人由于工作中遇到用js與Java進(jìn)行相互加解密的問(wèn)題,在網(wǎng)上查了很多資料及代碼段,均無(wú)法解決。后總結(jié)多篇文檔內(nèi)容終于找到解決辦法,現(xiàn)記錄與此:
下面給大家介紹兩種JavaScript的AES加密方式,具體詳情如下所示:
第一種:加解密時(shí)需要秘鑰(key)和秘鑰偏移量(iv)的情況,在線驗(yàn)證地址:http://www.seacha.com/tools/aes.html
//該方法可與Java進(jìn)行相互加解密<!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("十六位十六進(jìn)制數(shù)作為秘鑰"); var iv = CryptoJS.enc.Utf8.parse('十六位十六進(jìn)制數(shù)作為秘鑰偏移量'); 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
第二種:加解密時(shí)僅需要秘鑰,在線驗(yàn)證地址:http://encode.chahuo.com/
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>加解密時(shí)僅需要秘鑰</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相互加解密),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
微信小程序中使用 async/await的方法實(shí)例分析
這篇文章主要介紹了微信小程序中使用 async/await的方法,結(jié)合實(shí)例形式分析了微信小程序中async/await的功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05原生javascript實(shí)現(xiàn)簡(jiǎn)單的datagrid數(shù)據(jù)表格
這篇文章主要介紹了原生javascript實(shí)現(xiàn)簡(jiǎn)單的datagrid數(shù)據(jù)表格的方法,效果十分棒,需要的朋友可以參考下2015-01-01原生JavaScript實(shí)現(xiàn)滑動(dòng)拖動(dòng)驗(yàn)證的示例代碼
這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)滑動(dòng)拖動(dòng)驗(yàn)證的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12JS自調(diào)用匿名函數(shù)具體實(shí)現(xiàn)
定義一個(gè)函數(shù)用做臨時(shí)的命名空間,在這個(gè)命名空間內(nèi)定義的變量都不會(huì)污染到全局命名空間,需要的朋友可以參考下2014-02-02bootstrap插件treeview實(shí)現(xiàn)全選父節(jié)點(diǎn)下所有子節(jié)點(diǎn)和反選功能
這篇文章主要為大家詳細(xì)介紹了bootstrap插件treeview實(shí)現(xiàn)全選父節(jié)點(diǎn)下所有子節(jié)點(diǎn)、反選功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07JS構(gòu)造函數(shù)與原型prototype的區(qū)別介紹
下面小編就為大家?guī)?lái)一篇JS構(gòu)造函數(shù)與原型prototype的區(qū)別介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07