JS實現(xiàn)AES加密并與PHP互通的方法分析
本文實例講述了JS實現(xiàn)AES加密并與PHP互通的方法。分享給大家供大家參考,具體如下:
有關(guān)數(shù)據(jù)加密解密問題,有很多鐘加密方式;
這里我講述下js和php實現(xiàn)AES互通
js加密:
首先引入這幾個js文件
本站下載地址。
<script type="text/JavaScript" src="/CryptoJS/aes.js"></script> <script type="text/javascript" src="/CryptoJS/pad-zeropadding.js"></script> <script type="text/javascript"> var data="test";//加密字符串 var key = CryptoJS.enc.Latin1.parse('@12345678912345!');//密鑰 var iv = CryptoJS.enc.Latin1.parse('@12345678912345!');//與密鑰保持一致 //加密 var data = JSON.stringify(data);//將數(shù)據(jù)對象轉(zhuǎn)換為json字符串 var encrypted = CryptoJS.AES.encrypt(data,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding}); encrypted=encodeURIComponent(encrypted); document.write(decrypted);//輸出加密后的字符串 //解密 var data="加密的字符串"; //key和iv和加密的時候一致 var decrypted = CryptoJS.AES.decrypt(data,key,{iv:iv,padding:CryptoJS.pad.ZeroPadding}); decrypted=decrypted.toString(CryptoJS.enc.Utf8); document.write(decrypted);//輸出解密后的數(shù)據(jù) </script>
注意:在實際用的時候和php傳輸中,js加密后的字符串里面的+被瀏覽器解析成了空格 然后php解密的時候出錯;這里可以對加密之后的字符串做進(jìn)一步處理encrypted=encodeURIComponent(encrypted);就沒有這個問題了
PHP的加密解密方法:
$privateKey="@12345678912345!"; $iv="@12345678912345!"; //加密 $encrypted=mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$privateKey,$data,MCRYPT_MODE_CBC,$iv); echo base64_encode($encrypted); //解密 $encryptedData=base64_decode($data); $decrypted=mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$privateKey,$encryptedData,MCRYPT_MODE_CBC,$iv); $decrypted=rtrim($decrypted,"\0");//注意!解密出來的數(shù)據(jù)后面會出現(xiàn)六個紅點;這句代碼可以處理掉,從而不影響進(jìn)一步的數(shù)據(jù)操作 return $decrypted;
PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:
BASE64編碼解碼工具:
http://tools.jb51.net/transcoding/base64
密碼安全性在線檢測:
http://tools.jb51.net/password/my_password_safe
高強(qiáng)度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript加密解密技巧匯總》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
Three.js使用OrbitControls后修改相機(jī)旋轉(zhuǎn)方向無效解決辦法
three.js是用javascript寫的基于webGL的第三方3D庫,下面這篇文章主要給大家介紹了關(guān)于Three.js使用OrbitControls后修改相機(jī)旋轉(zhuǎn)方向無效的解決辦法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01JavaScript SHA-256加密算法詳細(xì)代碼
這篇文章主要為大家詳細(xì)介紹了JavaScript SHA-256加密算法代碼,具有一定的參考價值,感興趣的朋友可以參考一下2016-10-10微信小程序?qū)崿F(xiàn)MUI數(shù)字輸入框效果
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)MUI數(shù)字輸入框效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01filters.revealTrans.Transition使用方法小結(jié)
有看到幻燈片調(diào)用會用到divid.filters.revealTrans.Transition=Math.floor(Math.random()*23)和divid.filters.revealTrans.apply(),那么這兩個都是什么意思呢?2010-08-08實例詳解JavaScript靜態(tài)作用域和動態(tài)作用域
作用域是指程序源代碼中定義變量的區(qū)域,作用域規(guī)定了如何查找變量,也就是確定當(dāng)前執(zhí)行代碼對變量的訪問權(quán)限,這篇文章主要給大家介紹了關(guān)于JavaScript靜態(tài)作用域和動態(tài)作用域的相關(guān)資料,需要的朋友可以參考下2021-10-10