gpt4 book ai didi

php - 将 sha1 转换为 bcrypt?

转载 作者:可可西里 更新时间:2023-11-01 13:28:16 24 4
gpt4 key购买 nike

我有一个 PHP 应用程序,它拥有相当不错的用户群。不幸的是,这些年来它一直在使用 sha1($password.$salt),我真的很想放弃它,转而使用 bcrypt。我找到了一些获取 Blowfish 哈希的好方法,但我仍然不确定我应该使用的转换方法。这是我的选择:

选项1

每次用户登录时,我都会检查哈希值是否以 $2 开头。如果不是,我假设它是 sha1,获取用户输入的密码,获取它的 bcrypt 哈希并替换数据库中的旧哈希。

选项 2

我替换我的身份验证类来执行此操作:

$hash = password_hash("rasmuslerdorf", sha1($password . $salt));

这样,转换会更快。

但老实说,我不太喜欢这两个选项。两者都表明我仍然在我想摆脱的代码库中保留遗留检查。

从编码标准的角度来看,以上两者中哪一个更好?有什么建议吗?或者有人有更好的解决方案吗?

最佳答案

每个密码存储系统都必须有切换到更好的哈希算法的选项,您的问题不是您想象的一次性迁移问题。像 BCrypt 这样的好密码哈希算法有一个成本因素,有时您不得不增加这个成本因素(因为更快的硬件),然后您需要与迁移所需的相同过程。

您的 Option1 是一种方便的方法,只要哈希不是可怕的不安全(未加盐或非常弱的算法)。在 PHP 的新 password API ,你甚至会有一个函数 password_needs_rehash()以确定是否需要更新。

我建议让回退保留在代码中,这样您就可以免除客户面对用户使用无效密码的麻烦。作为用户,我不喜欢要求单击链接并重新输入密码的电子邮件,因为网络钓鱼,用户被教导要忽略此类电子邮件。如前所述,代码中的此类回退不错,这是获得安全密码处理的必要步骤。

关于php - 将 sha1 转换为 bcrypt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17580416/

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