Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在mySQL中存储加密数据_Php_Mysql_Authentication_Encryption - Fatal编程技术网

Php 如何在mySQL中存储加密数据

Php 如何在mySQL中存储加密数据,php,mysql,authentication,encryption,Php,Mysql,Authentication,Encryption,在双向加密方面,我已经不知所措。有很多信息,但我似乎找不到一个可靠的,以满足我的需要 我在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 de

在双向加密方面,我已经不知所措。有很多信息,但我似乎找不到一个可靠的,以满足我的需要

我在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作为字段类型,但我运气不太好。在正确的方向上给予一些帮助将不胜感激。

只是一个建议。 您是否查看了数据库中名称字段的排序规则?确保它位于类似于
utf8\u general\u ci
的位置。然后确保在更新到数据库之前打印加密的
$name
变量,以确保其包含正确的值。
希望这有帮助。

您的代码对我来说运行良好。检查数据库和表的编码设置。我确实解决了它,不得不将排序规则更改为utf8\u general\u ci。终于通过了这个小小的障碍!谢谢你,我确实按照你的建议设置了排序规则,在我的代码中发现了另一个错误,现在它工作了!