无法解密数据

时间:2011-12-06 23:40:40

标签: php mysql mcrypt encryption

我需要解密存储在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
      )
    )
  ); 
} 

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

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

1 个答案:

答案 0 :(得分:0)

  

[$salt1$salt2]这些是来自其他来源的静态文本块。我能够得到   我的一些数据要解密,但我无法获得我使用的其他数据   日期(“r”)作为密钥的一部分。

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

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

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