2009-12-16 135 views
2

解密它,我已經在PHP以下加密班組長加密查詢字符串和PHP

define(ENCRYPTION_KEY,"abcdegef"); 
define(INITIALIZATION_VECTOR,mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB), MCRYPT_RAND)); 

function EncryptString($input) 
{ 
    $encrypted_string = mcrypt_encrypt(MCRYPT_DES, ENCRYPTION_KEY, $input, MCRYPT_MODE_CBC, INITIALIZATION_VECTOR); 
    return base64_encode($encrypted_string); 
} 

function DecryptString($encryptedInput) 
{ 
    $decrypted_string = mcrypt_decrypt(MCRYPT_DES, ENCRYPTION_KEY, base64_decode($encryptInput), MCRYPT_MODE_CBC, INITIALIZATION_VECTOR); 
    return $decrypted_string; 
} 

,並且對與查詢字符串錨標記網址對此我加密

<a href="SomePage.php?action=<?php include_once ('EncryptionLibrary.php'); 
echo EncryptString("IamData"); ?> 

當我試圖解密它在SomePage.php使用以下代碼..我得到解密值不正確

if (isset($_GET["action"])) 
{ 
     echo trim(DecryptString($_GET["action"])); 
} 
+0

我正在通過加密 >「 – 2009-12-16 13:54:13

回答

2

INITIALIZATION_VECTOR的值每次都不相同。對於使用IV的模式,您需要使用同一個進行加密和解密。

+0

然後如何做到這一點? – 2009-12-16 14:03:23

+0

選項。 (a)使用不使用IV的模式(如EBC)。 (b)將IV發送到頁面(不需要保密)。 (c)手動創建一次IV。硬編碼它[*],也許使用序列化和反序列化。 [*]我不敢相信我建議你硬編碼數據。不要告訴我說過的任何人。 – 2009-12-16 14:10:13