在php中解密河豚

时间:2015-11-26 10:48:41

标签: javascript php mcrypt blowfish

我在我的客户端使用blowfish.js。 要在客户端加密,我使用

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

那样encryptedData是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

不行。 有谁知道我在服务器端做错了什么?

1 个答案:

答案 0 :(得分:2)

为什么在编写数据时pack('H*',$data)base64编码的字符串。只需base64_decode数据并将其传递给解密函数。

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

$data = mcrypt_decrypt(MCRYPT_BLOWFISH, $myEncryptionKey, $decryptedData, MCRYPT_MODE_ECB);