[英]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.