将密码转换为哈希 PHP

Posted

技术标签:

【中文标题】将密码转换为哈希 PHP【英文标题】:Convert password into hashes PHP 【发布时间】:2012-06-20 21:58:22 【问题描述】:

我的数据库中的密码现在是文本,我只是想我可以使用 md5() 函数将密码转换为哈希值,但现在我想将数据库中的所有用户都转换为哈希值所以我不需要告诉每个人重新输入他们的密码,

此问题与Convert text passwords in database to hashed passwords? 等任何其他问题均不重复,因为我想知道如何在 php 中执行此操作,Secure hash and salt for PHP passwords 也不重复,因为我想更改所有已存在的密码我的数据库我不应该像上面所说的那样要求我的所有用户更改他们的密码,

有什么想法吗?

【问题讨论】:

不要使用md5,使用其他类似whirlpoolmd5 可用的彩虹表太多了,还有其他问题。 @Brad Ok 会这样做,但我想要一个想法来转换数据库中已经存在的所有密码 创建一个新列。将 A 列中的所有密码转换为 B 列中的加密字符串。目视检查表以确保 A 列没有任何加密密码。将 B 列重命名为“A 列”,将 A 列重命名为“Z 列”。在删除 Z 列之前等待几周,这样您就可以首先确保一切正常。责备自己一开始就没有使用加密密码。 更新XXX设置密码=md5(密码);但我不推荐它。 【参考方案1】:

对于您的示例,您所要做的就是通过散列运行每个密码(我建议不要使用 md5,因为它现在已经知道弱点)并将散列存储回来。然后当有人尝试登录时,获取他们的密码并对其进行哈希处理,然后将哈希值与您在数据库中的内容进行比较。如果您当前存储明文,则不必要求用户租用任何内容,只需散列您已有的内容即可。

【讨论】:

【参考方案2】:

Md5 加密不安全,但我已为您加密。

password_hash() example using Argon2i

<?php
echo 'Argon2i hash: ' . password_hash('rasmuslerdorf', PASSWORD_ARGON2I);
?>

【讨论】:

以上是关于将密码转换为哈希 PHP的主要内容,如果未能解决你的问题,请参考以下文章

如何将密码哈希从 MD5 转换为 SHA?

使用 mod_rewrite 将带有哈希字符的路径转换为查询字符串

PHP,可以吗?将密码哈希中的字符串作为主键存储在数据库中?

是否可以将 40 个字符的 SHA1 哈希转换为 20 个字符的 SHA1 哈希?

如何在 SQL Server 2008 中转换文本字符串中的哈希密码

如何迁移密码哈希?