我有一个 PHP 应用程序,它有一些不错的用户群。现在不幸的是,这些年来它一直在使用 sha1($password . $salt),我真的很想放弃它,转而使用 bcrypt。我找到了一些获得 Blowfish 哈希的好方法,但我仍然不确定应该使用的转换方法。这是我的选择:
选项1
每次用户登录时,我都会检查哈希是否以 $2 开头。如果不是,我假设它是 sha1,取用户输入的密码,获取它的 bcrypt 哈希并替换数据库中的旧哈希。
选项 2
我替换了我的 auth 类来做到这一点:
$hash = password_hash("rasmuslerdorf", sha1($password . $salt));
这样,转换速度更快。
但老实说,我不太喜欢这两种选择。两者都建议我仍然在我想摆脱的代码库中保留遗留检查。
从编码标准的角度来看,以上两者中哪一个更好?还是有人有更好的解决方案?