在 php 中解密河豚
Decrypt blowfish in php
我在客户端使用 blowfish.js
。
要在客户端加密,我使用
var encryptedData = blowfish.encrypt(
JSON.stringify(myData), myEncryptionKey, {cipherMode: 0, outputType: 0}
);
这样encryptedData
就是Base64编码的河豚字符串。 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);
当我尝试打印 $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);
我在客户端使用 blowfish.js
。
要在客户端加密,我使用
var encryptedData = blowfish.encrypt(
JSON.stringify(myData), myEncryptionKey, {cipherMode: 0, outputType: 0}
);
这样encryptedData
就是Base64编码的河豚字符串。 OK.
我使用
在客户端解密var decryptedData = blowfish.decrypt(
encryptedData , myEncryptionKey, {cipherMode: 0, outputType: 0}
);
所以 decryptedData
等于 JSON.stringify(myData)
。 OK.
然后我将我的 encryptedData
发送到包含
$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);