簡體   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