2016-05-30 2 views
-1

Я использую следующий JS код для шифрования снабжать струной, тетивой и т.п.Crypto расслоение плотной зашифрованная строка не дешифровать в 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-Side

Подробнее о AES шифрования/decrytption в PHP: 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

Смежные вопросы