2015-11-26 3 views
2

Я использую blowfish.js на своих клиентов. Для шифрования на стороне клиента я используюDecrypt blowfish in php

var encryptedData = blowfish.encrypt(
    JSON.stringify(myData), myEncryptionKey, {cipherMode: 0, outputType: 0} 
); 

Таким образом encryptedData в кодировке Base64 Blowfish строку. Это OK.

Чтобы расшифровать на стороне клиента я использую

var decryptedData = blowfish.decrypt(
    encryptedData , myEncryptionKey, {cipherMode: 0, outputType: 0} 
); 

Так decryptedData равна JSON.stringify(myData). Это OK.

Тогда я посылаю мой encryptedData в сценарий .php, который содержит

$data = $_POST['data']; 
$data = mcrypt_decrypt(MCRYPT_BLOWFISH, $myEncryptionKey, pack('H*',$data), MCRYPT_MODE_ECB); 

И когда я пытаюсь напечатать $ данных я получаю что-то непроницаемым, как

�Nv��Xd�̿�:q6��A����,!v��c�O¡1�%>��ҭ� {0�� � ���g�u�����t�z3q$����T��/Ҧ.j-�/!���;�lS���Z�X 
��&����{j�m�����F�`7��.......and so on 

Это разве OK , Кто-нибудь знает, что я делаю неправильно на стороне сервера?

+1

почему '' упаковка ('H *', $ данных) '' как вы написали '' data'' является base64 строка в кодировке, просто '' base64_decode'' данные и передать его функции расшифровка – ins0

+0

уже пробовал без пакета и все еще получал нечитаемую строку – 966p

+1

Вы подтвердили, что после того, как вы '' base64'' декодируете зашифрованную строку в php, она равна, как на стороне клиента? – ins0

ответ

2

Почему вы pack('H*',$data), поскольку вы написали данные, это закодированная строка base64. Просто введите base64_decode данные и передайте их функции дешифрования.

$data = $_POST['data']; 
$decryptedData = base64_decode($data); 

$data = mcrypt_decrypt(MCRYPT_BLOWFISH, $myEncryptionKey, $decryptedData, MCRYPT_MODE_ECB); 
Смежные вопросы