2016-05-30 39 views
-1

無法解密我使用下面的js代碼加密字符串加密的js加密的字符串在PHP

var text = 'should be decrypted!'; 
var key = 'HighlySecretKeyForJsEncryption!!'; 
var encrypted = CryptoJS.AES.encrypt(text, key); 
console.log(encrypted.toString()); 

輸出:U2FsdGVkX19vf + S6/+ eB8A + 3iKFCl1A0e + oe0BSbcMVGxb64FL35Q3CB/LZNu4ng

,這就是我所做的在php解密此

function decrypt($toDecrypt) { 
    $key = "HighlySecretKeyForJsEncryption!!"; 
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); 
    $toDecrypt = base64_decode($toDecrypt); 
    return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, substr($toDecrypt, $iv_size), MCRYPT_MODE_CBC, substr($toDecrypt, 0, $iv_size))); 
} 

但這不工作,它給了我垃圾字符串。

+1

BASE64_DECODE($ toDecrypt);你的base64在哪裏編碼? – DannyThunder

+0

不工作,如果還刪除base64_decode – Pranav

+1

也許有趣? http://stackoverflow.com/questions/27677236/encryption-in-javascript-and-decryption-with-php。 –

回答

-1

docs

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase"); 
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase"); 

CryptoJS支持AES-128,AES-192和AES-256。它會根據您傳入的密鑰的大小選擇 變體。如果您使用密碼短語 ,那麼它將生成一個256位密鑰。

您probabily需要通過不斷MCRYPT_RIJNDAEL_256解密PHP端時

更多關於在PHP AES加密/ decrytption:https://stackoverflow.com/a/3422787/4499267

+0

使用MCRYPT_RIJNDAEL_256沒有運氣! – Pranav

+0

CryptoJS只支持AES,但'RIJNDAEL_256'不再是AES。只有'RIJNDAEL_128'與AES兼容。 –

+0

請注意[wiki頁面](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)表示高級加密標準(AES)也被稱爲Rijndael – Phate01