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