2012-07-26 48 views
0

我有一個服務於Java加密的字符串作爲3DES -3DES在PHP是不一樣的Java

30BA1A87B3B08F8A6F69BF0E2EC7539B 

當我申請3DES加密在PHP檢查結果,我得到一個很大的不同字符串,它是 -

ªã;Îù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 />'; 
+0

Java輸出是十六進制編碼的。 – 2012-07-26 12:05:52

回答

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 />'; 
+0

java正在將字符串轉換爲十六進制...但我不知道如何做到這一點 – Pawan 2012-07-26 04:01:40

+0

你可以發表一些你如何到達這個字符串在PHP中的代碼?什麼函數你打電話 – 2012-07-26 04:03:48

+0

添加上面的代碼 – Pawan 2012-07-26 04:16:09