я использую blowfish.js
на моей стороне клиента.
Для шифрования на стороне клиента я использую
var encryptedData = blowfish.encrypt(
JSON.stringify(myData), myEncryptionKey, {cipherMode: 0, outputType: 0}
);
Сюда encryptedData
является строкой Blowfish в кодировке Base64. это Хорошо.
Для расшифровки на стороне клиента я использую
var decryptedData = blowfish.decrypt(
encryptedData , myEncryptionKey, {cipherMode: 0, outputType: 0}
);
Так decryptedData
равно JSON.stringify(myData)
, это Хорошо.
Затем я отправляю encryptedData
к сценарию .php, который содержит
$data = $_POST['data'];
$data = mcrypt_decrypt(MCRYPT_BLOWFISH, $myEncryptionKey, pack('H*',$data), MCRYPT_MODE_ECB);
И когда я пытаюсь напечатать $ data, я получаю что-то нечитаемое, например
�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
Это не в порядке.
Кто-нибудь знает, что я делаю не так на стороне сервера?
Почему ты pack('H*',$data)
как вы написали, данные base64
закодированная строка. Просто base64_decode
данные и передать его в функцию расшифровки.
$data = $_POST['data'];
$decryptedData = base64_decode($data);
$data = mcrypt_decrypt(MCRYPT_BLOWFISH, $myEncryptionKey, $decryptedData, MCRYPT_MODE_ECB);
Других решений пока нет …