gpt4 book ai didi

php - 当我没有明文时,如何在 PHP 中为 htpasswd 文件生成 md5 哈希值

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:44 24 4
gpt4 key购买 nike

我的数据库中有使用 md5 加密的用户密码记录。我想让 PHP 将这些加密密码添加到 htpasswd 文件中。但我读到 htpasswd 文件使用 MD5 算法,重复 1000 次并加盐。我在网上找到了大量有关如何从明文创建此哈希的示例,但在本例中,我没有明文。我正在尝试从已加密的 md5 哈希开始生成 htpasswd 哈希。我应该编写自己的代码将其再哈希 999 次,然后加盐吗?我该怎么做?

这是在带有 PHP 5 和 MySQL 的 Linux 服务器上。

最佳答案

有两种方法可以在 .htpasswd 中存储基于 MD5 的哈希值:标准 md5crypt 和 Apache 自己的 MD5 哈希值。这两种算法是相同的,但它们使用不同的魔术字符串常量。

正如你所说,它们基于 md5'ing 1000 次,但如果你 look closely at the algorithm ,您会看到它在每次迭代中附加明文密码。

这不仅仅是md5(md5(md5(...)))),而是一个相当复杂的md5(password+salt+password+md5(md5(...)+salt+password+password))

因此,要计算 .htpasswd md5 密码,您需要实际的明文密码。 md5(password) 根本没有帮助你。

<小时/>

那么你能做什么呢?

  • 您可以使用不同形式的 Apache 身份验证,例如 mod_auth_form ,对您的数据库进行您自己的身份验证。无论如何,这可能是最好的选择。

  • 通过在数据库中存储 md5(password),您引入了一个巨大的安全漏洞。您(和任何攻击者)可以使用基于 GPGPU 的 md5 破解程序在一天内获取其中大部分内容的明文。

  • 您可以要求用户在下次登录时更改密码,并为您提供明文密码,您可以借此机会修复该安全漏洞。

关于php - 当我没有明文时,如何在 PHP 中为 htpasswd 文件生成 md5 哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517707/

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