gpt4 book ai didi

php - MD5 在 SQL 数据库和 PHP 脚本中的作用不同

转载 作者:行者123 更新时间:2023-12-01 00:19:27 25 4
gpt4 key购买 nike

最近我创建了一个脚本来处理我的游戏的登录和注册,它使用 http_get 方法来更新统计信息。我已经成功地创建了所有内容,但是有一个问题。当用户注册时,它会插入 PHP 脚本生成的不同 md5 字符串,因此,我无法比较密码。

这是我将 md5 字符串插入数据库的方式:

$pw = md5($password);
$insert = mysqli_query($connect, "INSERT INTO Accounts (username, password, email,reg_ip, wins, looses, experience) VALUES ('$username', '$pw', '$email', '$reg_ip', '0','0', '0')");
if($insert) {
echo "account successfully created";

}
else {
echo "error";
}

这是我检查密码的方式:

if($p['password'] == md5($password)) {
echo "login was successful!";
}
else {
echo "incorrect password";
}

这是用户注册时数据库中的md5字符串:(未加密的字符串为:pocakaj123)

54e8850ba5eca655854ddf1b503943

这是当我 echo md5($password) 时生成的字符串。

54e8850ba5eca655854ddf1b50394348

最佳答案

这是由于您的数据库中字段的长度。您需要增加长度以适应整个字符串。

目前,它只接受 30 个字符,因此剩余的字符会被截断:

54e8850ba5eca655854ddf1b503943

您需要将长度增加到至少 32 以适合整个字符串:

54e8850ba5eca655854ddf1b50394348

注意:

md5() 不是哈希密码的安全方法,更好的方法是 bcrypt() 或者使用 PHP 的密码哈希函数,password_hash()

md5() 不安全的原因:

Hashing algorithms such as MD5, SHA1 and SHA256 are designed to be very fast and efficient. With modern techniques and computer equipment, it has become trivial to "brute force" the output of these algorithms, in order to determine the original input.

引用自http://php.net/manual/en/faq.passwords.php .

关于php - MD5 在 SQL 数据库和 PHP 脚本中的作用不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36805327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com