0

我有一个来自 java 服务的 3DES 加密字符串 -

30BA1A87B3B08F8A6F69BF0E2EC7539B

当我在 PHP 中应用 3DES 加密来检查结果时,我得到一个非常不同的字符串,它是 -

ªã;Îù1ù@yq—ÿÃÓ"Õó[ûñüM“ƒº5fá$!Ø5JºÝ7

我正在使用开源 PHP 库进行加密,它是来自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 />';
4

1 回答 1

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 />';
于 2012-07-26T03:51:56.597 回答