无法解密数据

Posted

技术标签:

【中文标题】无法解密数据【英文标题】:Can't Decrypt Data 【发布时间】:2012-01-14 13:29:13 【问题描述】:

我需要解密存储在 mysql 数据库中的数据。

它在我的测试中有效,但现在它已经上线并且用户正在提交数据,输出数据不会解密为任何可读的内容。

function encrypt($text,$key)
  $key = md5("Salt1". $key . "Salt2");
  return trim(
    base64_encode(
      mcrypt_encrypt(
        MCRYPT_RIJNDAEL_256, 
        $key, 
        $text, 
        MCRYPT_MODE_ECB, 
        mcrypt_create_iv(
          mcrypt_get_iv_size(
            MCRYPT_RIJNDAEL_256, 
            MCRYPT_MODE_ECB
          ), 
          MCRYPT_RAND
        )
      )
    )
  ); 

所以数据在提交时被加密,关键数据来自同一行的几列。

但是使用:

function decrypt($text,$key)
  $key = md5("Salt1". $key . "Salt2");
  return trim(
    mcrypt_decrypt(
      MCRYPT_RIJNDAEL_256, 
      $key, 
      base64_decode($text), 
      MCRYPT_MODE_ECB, 
      mcrypt_create_iv(
        mcrypt_get_iv_size(
          MCRYPT_RIJNDAEL_256, 
          MCRYPT_MODE_ECB
        ),
        MCRYPT_RAND
      )
    )
  ); 
 

我只是得到更多的加密垃圾。

我需要另一个解决方案,而不是告诉用户返回并更新他们的信息。

【问题讨论】:

对于初学者来说,$salt1$salt2 应该从哪里突然出现? 那些是来自其他来源的静态文本块。我能够获取我的一些数据进行解密,但我无法获取我使用 date("r") 作为密钥一部分的其他数据。 什么? $salt1$salt2 需要定义为 global 才能工作 对。它们是我为保护我的数据而删除的功能的一部分。 我编辑了我的问题,也许可以让它不那么混乱。 【参考方案1】:

[$salt1$salt2] 这些是来自其他来源的静态文本块。我能够得到 我的一些数据要解密,但我无法在我使用的地方获取其他数据 date("r") 作为键的一部分。

对不起,如果我说的很明显,但 date("r") 每秒打印一个不同的值:

Wed, 07 Dec 2011 17:35:44 +0100

如果您已将其用作加密密钥的一部分,则需要恢复生成密钥的确切时间,包括准确的秒数和时区。问题是:你存储了吗?

【讨论】:

以上是关于无法解密数据的主要内容,如果未能解决你的问题,请参考以下文章

为啥Wireshark无法解密HTTPS数据

无法加密和解密 plist 中的数据

Codeigniter 4:无法解密加密的帖子数据

易语言加密数据之后无法解密数据的问题

为什么Wireshark无法解密HTTPS数据

解密后缀eight/ROGER勒索病毒 百分百解密 mdf数据库解密