繁体   English   中英

无法在使用php脚本加密的mysql中解密

[英]Not able to decrypt in mysql that was encrypted using the php script

我正在使用以下php代码加密我的字符串。

$encryption_key = "mickey";
$value = "ddd";
function encrypt($value)
{
    global $encryption_key;
    if(function_exists("mcrypt_ecb"))
    {
        return mcrypt_ecb(MCRYPT_DES, $encryption_key, $value, MCRYPT_ENCRYPT);
    }
    else return $value;
}

我将加密值存储在数据库中。 这会将“ ?P?? ”存储在数据库的“加密”列中

但是,当我运行此查询

select DES_DECRYPT(Encrypt,"mickey") from test_encrypt 

它给我

3f503f1b3f1b20

如何从sql查询中检索原始的$value

谢谢

听起来对我来说是一个字符集问题。

您可能会将二进制值存储到VARCHAR(或其他非二进制类型)中,并且正在应用字符集转换,并且某些字节在该列的字符集中不是有效的“字符”,或者,或在检索时转换存储的值,并用问号代替“未知”编码。

作为测试,您可以尝试在二进制值上使用MySQL HEX()UNHEX()函数,尽管这样做实际上会使字符串的大小增加一倍。 代表十六进制数字的字符串应该不存在任何字符集问题。 (我认为MySQL中没有原生的base-64编码/解码功能。)

或者,您可以尝试将加密的值存储在具有支持二进制数据的数据类型的列中,并且不进行字符集转换,例如VARBINARY而不是VARCHAR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM