【问题标题】:Encrypting Querystring and Decrypting it in PHP在 PHP 中加密和解密查询字符串
【发布时间】:2009-12-16 13:51:22
【问题描述】:

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

并且在锚标签上有我正在加密的查询字符串的 URL

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

当我尝试使用以下代码在 SomePage.php 上对其进行解密时......我得到的解密值不正确

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

【问题讨论】:

标签: php get query-string encryption


【解决方案1】:

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

【讨论】:

  • 选项。 (a) 使用不使用 IV 的模式(如 EBC)。 (b) 将 IV 发送到页面(不需要保密)。 (c) 手动创建一次 IV。硬编码它 [],可能使用序列化和反序列化。 [] 我不敢相信我会建议你对数据进行硬编码。不要告诉任何人我说过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
相关资源
最近更新 更多