我需要解密存储在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
)
)
);
}
我只是获得了更多加密的垃圾。
我需要另一个方法,而不是告诉用户返回并更新他们的信息。
答案 0 :(得分:0)
[$salt1
和$salt2
]这些是来自其他来源的静态文本块。我能够得到 我的一些数据要解密,但我无法获得我使用的其他数据 日期(“r”)作为密钥的一部分。
很抱歉,如果我说的很明显,date("r")
每秒打印一个不同的值:
Wed, 07 Dec 2011 17:35:44 +0100
如果您已将其用作加密密钥的一部分,则需要恢复生成密钥的确切时间,包括精确的秒和时区。问题是:你存储了吗?