Php 当我没有';我没有明文
我的数据库中有使用md5加密的用户密码记录。我想让PHP将这些加密密码添加到htpasswd文件中。但是我已经读到htpasswd文件使用了一个MD5算法,该算法重复了1000次,并进行了修改。我在网上找到了很多关于如何从明文创建这个散列的例子,但是在这种情况下,我没有明文。我试图从已经加密的md5散列开始生成htpasswd散列。我是否应该编写自己的代码来对其进行更多的哈希运算,并对其进行加盐?我该怎么做Php 当我没有';我没有明文,php,linux,apache,encryption,hash,Php,Linux,Apache,Encryption,Hash,我的数据库中有使用md5加密的用户密码记录。我想让PHP将这些加密密码添加到htpasswd文件中。但是我已经读到htpasswd文件使用了一个MD5算法,该算法重复了1000次,并进行了修改。我在网上找到了很多关于如何从明文创建这个散列的例子,但是在这种情况下,我没有明文。我试图从已经加密的md5散列开始生成htpasswd散列。我是否应该编写自己的代码来对其进行更多的哈希运算,并对其进行加盐?我该怎么做 这是在使用PHP5和MySQL的Linux服务器上。在.htpasswd中存储基于MD5
这是在使用PHP5和MySQL的Linux服务器上。在
.htpasswd
中存储基于MD5的哈希有两种方法:标准md5crypt和Apache自己的MD5哈希。这两种算法是相同的,但它们使用不同的魔术字符串常量
正如您所说,它们是基于md5'ing的1000次,但是如果您这样做,您将看到它在每次迭代中都附加了明文密码
它不仅仅是md5(md5(md5(…))
,而是一个相当复杂的md5(密码+盐+密码+md5(md5(…)+盐+密码+密码))
因此,要计算.htpasswd
md5密码,需要实际的明文密码<代码>md5(密码)对您毫无帮助
那么你能做些什么呢
- 您可以使用不同形式的Apache身份验证,例如,对数据库进行自己的身份验证。无论如何,这可能是最好的选择
- 通过在数据库中存储
,您引入了一个巨大的安全漏洞。您(和任何攻击者)都可以使用基于GPGPU的md5破解程序在一天内获取其中大部分内容的明文md5(密码)
- 您可以要求用户在下次登录时更改密码,给您一个明文密码,您可以借此机会修复该安全漏洞