gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:05:05 25 4
gpt4 key购买 nike

我正在使用以下 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

关于php - 无法在使用 php 脚本加密的 mysql 中解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22824057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com