-1

我希望有人可以帮助非 PHP 开发人员提供一个示例,说明如何解密三重 DES URL 编码字符串(例如,在名为“q”的查询字符串变量中传递给页面)。

密钥为 24 位,初始化向量为 8 位。

在 C# 中,原始数据是:

  1. UTF-8 编码为字节数组
  2. 用密钥和 IV 加密
  3. 编码为 Base 64 字符串
  4. 编码为字符串的 URL

...

byte[] rawData;
TripleDES tripleDESalg = TripleDES.Create();
rawData = UTF8Encoding.UTF8.GetBytes(message);
ICryptoTransform cTransform = tripleDESalg.CreateEncryptor(key, IV);
byte[] resultArray = cTransform.TransformFinalBlock(rawData, 0, rawData.Length);
tripleDESalg.Clear();
encryptedText = Convert.ToBase64String(resultArray);

...

在 PHP 页面中,我真的找不到有关如何将这些步骤结合在一起的示例:

  1. 解码查询字符串变量“q”中的 URL 编码字符串
  2. 解码 Base 64 编码的字符串(例如 base64_decode)
  3. 使用用于加密它的相同密钥和 iv 解密值(假设您控制加密和解密并且两个系统都知道密钥和 iv 是什么)
  4. 打印/回显输出

4

1 回答 1

2

从查询字符串中获取值

$string = $_REQUEST['q'];

网址解码

urldecode

Base 64 解码

base64_decode

解密

使用mcrypt_decrypt.

对于第一个参数,您传入密码(密码列表),在您的情况下,它将是MCRYPT_DES.

其余参数将是密文、密钥、iv 等。

PHP 手册很详尽。用它。

于 2012-05-25T01:35:50.690 回答