PHP中的3DES与Java不同

时间:2012-07-26 03:45:21

标签: java php encryption 3des

我有一个来自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 />';

1 个答案:

答案 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 />';