我有一个来自java服务的3DES加密字符串 -
30BA1A87B3B08F8A6F69BF0E2EC7539B
当我在PHP中应用3DES加密来检查结果时,我得到一个非常不同的字符串,如 -
ªã;Îù1ù@yq—ÿÃÓ"Õó[ûñüM“ƒº5fá$!Ø5JºÝ7
我正在使用开源PHP lib进行加密,这是来自http://sourceforge.net/projects/phpseclib/的Crypt_TripleDES。
有人可以帮助我,了解哪里出了问题,在哪里?
请问我是否遗漏了什么。
由于
PHP代码 -
require_once 'Crypt/TripleDES.php';
$tdes = new Crypt_TripleDES();
$tdes->setKey($key);
$enc_text = $tdes->encrypt($text);
echo 'Encrypted text - '.($enc_text).'<br />';
答案 0 :(得分:1)
最像是如何显示信息。
在第一行中,您似乎将字符串输出为十六进制。也就是说,数据的每个字节都被转换为两个十六进制字符。
在第二行中,您可能只是尝试将原始二进制文件转储到输出。也就是说,每个字节都被解释为ASCII字符,这就是为什么它看起来像地狱。
我们可以获得有关Java输出的更多信息吗?你是怎么得到它的?
查看库后,似乎是的,它返回原始二进制字符串。要将其转换为十六进制,您只需调用内置的bin2hex()
函数:
require_once 'Crypt/TripleDES.php';
$tdes = new Crypt_TripleDES();
$tdes->setKey($key);
$enc_text = $tdes->encrypt($text);
echo 'Encrypted text - ' . bin2hex($enc_text) . '<br />';