簡體   English   中英

如何在MySQL中存儲加密數據

[英]How to store encrypted data in mySQL

在雙向加密方面,我已經不知所措。 有很多信息,但是我似乎找不到適合我需要的可靠信息。

我在PHP中有以下內容:

function encrypt( $key, $string ){
    $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
    return $encrypted;
}

function decrypt( $key, $encrypted ){
    $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
    return $decrypted;
}
//Stripped out code for readability
$encryption_Key = 'password'; //such strong, many vulnerable
$name = encrypt($encryption_Key, $_POST['name']);
$stmt = $conn->prepare("UPDATE Customers SET 
                                    name = ? WHERE blah = ?");
$stmt->bind_param('si', $name, $blah);
$stmt->execute();
$stmt->close();

但是看着mySQL,我得到像這樣的行話:

~/�Jꎈ*3��9k��Z�f������ï

和我解密時無法讀取的字符,如下所示:

$name = decrypt($encryption_Key, $name ); 

名稱列的字段類型當前為:

varchar(200)

我看過一些示例,其中您使用二進制或Blob作為字段類型,但運氣不佳。 在正確方向上的一些幫助將不勝感激。

只是一個建議。 您是否查看過數據庫中name字段的排序規則? 確保它位於utf8_general_ci東西上。 然后確保在更新到數據庫之前打印加密的$name變量,以確保它包含正確的值。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM