2009-12-16 103 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