如何解密PHP页面中的三重DES字符串?

时间:2012-05-25 01:28:53

标签: php encryption

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

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

在C#中,原始数据是:

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

    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. 解码querystring变量“q”
    2. 中的URL编码字符串
    3. 解码Base 64编码的字符串(例如base64_decode)
    4. 使用相同的密钥和用于加密它的iv来解密该值(假设您控制加密和解密,并且两个系统都知道密钥和iv是什么)
    5. 打印/回显输出

1 个答案:

答案 0 :(得分:2)

从查询字符串中获取值

$string = $_REQUEST['q'];

网址解码

urldecode

Base 64 Decode

base64_decode

<强>解密

使用mcrypt_decrypt

对于第一个参数,您传入密码(List of Ciphers),在您的情况下,密码为MCRYPT_DES

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

PHP手册详尽无遗。使用它。