js加密php解密(CryptoJS)碰到的坑

來源:互聯網
上載者:User

標籤:參考   檔案   做了   接下來   字母數   mcr   key   php檔案   空格   

今天做了一個功能,需要js傳密碼到php檔案,對js密碼 進行判斷,為想為這個傳輸過程進行解密,參考了網上的一個方法(這個方法我只是使用了,並沒有太深瞭解0.0)

首先要引入3個js檔案 (在網上可搜尋到)

<script src="../public/js/aes.js"></script>
<script src="../public/js/md5.js"></script>
<script src="../public/js/pad-zeropadding.js"></script>
然後 附上我使用時的代碼
var data= "132465";//需要加密的資料
var key = CryptoJS.enc.Utf8.parse(‘1a1a1a1b1e1c1s12‘);
var iv = CryptoJS.enc.Utf8.parse(‘1111111111111111‘);
//上面2個參數不是很清楚,但是跟php檔案中的參數要相同(長度為16位,其他位元暫未嘗試)
var encrypted = CryptoJS.AES.encrypt(data, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding });
var msg = encrypted.toString();//結果為加密後的字串

接下來是php檔案
  
$pass = str_replace(‘ ‘,‘+‘,$pass);
//第一個坑,上面之所以要把字串中的空格給替換為‘+‘,不替換下面解碼會出錯!!!
(這個是解決掉下面的坑後再測試時發現,有些加密解密會成功,有些會失敗,把加密後的字串獨立拿出來時才發現這個問題)
$privateKey = "1a1a1a1b1e1c1s12";
$iv = "1111111111111111";
//上面2個要跟前面js檔案的key和vi相同
$encryptedData = base64_decode($pass);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_CBC, $iv);
$decrypted =trim($decrypted);
第二個坑,上2步結束後,如果不用trim方法,列印var_dump($decrypted),會輸出加密前的值,但是!!!後面緊跟著一堆亂碼!
我查看原始碼發現,這些是 ‘&#0;‘ 這個字元我一臉懵逼,搞了好多方法都沒去掉(果然菜雞),後來試了trim這個函數,馬上就沒了這些
亂碼(好氣!),就完全獲得到js加密前的密碼了(好像很簡單的樣子)。。。。特地寫了這篇文章來紀念我逝去的下午。
tips:我都是用字母數字底線測試的,漢子和特殊字元暫未測試!
 
 

js加密php解密(CryptoJS)碰到的坑

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.