加密Querystring并在PHP中解密它

时间:2009-12-16 13:51:23

标签: php get query-string encryption

我在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"]));
}

1 个答案:

答案 0 :(得分:2)

每次INITIALIZATION_VECTOR的值都不同。对于使用IV的模式,您需要使用相同的模式进行加密和解密。