gpt4 book ai didi

php - 批量密码哈希 PHP-LOGIN PROJECT 代码

转载 作者:行者123 更新时间:2023-11-29 01:28:04 25 4
gpt4 key购买 nike

我有以下问题/需求。

我的网站有 2000 个用户,但密码是使用纯文本存储的(我知道这非常糟糕)。通过阅读各种网站博客,我发现我需要使用现代密码散列和加盐。我找到了 php-login.net .他们使用现代加盐/散列。

我已经下载了我将在我的网站上实现的最小登录脚本。我已经设置了 xampp 在本地进行测试。当我注册一个用户时,密码被散列,我可以登录。

我的主要要求是我想散列我当前所有的纯文本密码。 php 登录使用 php 密码兼容库。

password_compatibility_library

我如何对数据库中的所有明文密码进行哈希处理,因为我不会对 2000 1 1 进行哈希处理。

我假设我可以编写一个脚本来使用密码库更新数据库中的所有记录。

最佳答案

<?php
// you should put your db connection stuff here
require('connect.php');

//you create a new column to store hashed passwords. Good idea if
//something goes bad. You should drop the column with the original
// passwords once every thing is ok and done.
$result = mysqli_query(
$conn,
'alter table users add column hashed_password varchar(255) not null'
);

if ($result===FALSE)
{
// handle error here
}

$result = mysqli_query($conn, 'select * from users');
if ($result===FALSE)
{
// handle error here
}else
{
while($user = mysqli_fetch_assoc($result)
{
// you could use PASSWORD_DEFAULT here but I wouldn't. If in a
// future migration the default password crypt function changes
// your system won't work and it will be hard to know why.
$hashedPassword = password_hash($user['password'], PASSWORD_BCRYPT);
$result2 = mysqli_query($conn,'update users set hashed_password = \''. mysqli_real_escape_string($hashedPassword) .'\' where id=\''. $user['id'] .'\'');
if ($result2 === FALSE)
{
//handle error here
}
}
}

然后您只需检查 hashed_pa​​ssword 列中的密码,而不是原始密码。如果一切正常并且您可以毫无问题地登录,您可以删除原始密码列并完成。

关于php - 批量密码哈希 PHP-LOGIN PROJECT 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30616528/

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