Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当我没有';我没有明文_Php_Linux_Apache_Encryption_Hash - Fatal编程技术网

Php 当我没有';我没有明文

Php 当我没有';我没有明文,php,linux,apache,encryption,hash,Php,Linux,Apache,Encryption,Hash,我的数据库中有使用md5加密的用户密码记录。我想让PHP将这些加密密码添加到htpasswd文件中。但是我已经读到htpasswd文件使用了一个MD5算法,该算法重复了1000次,并进行了修改。我在网上找到了很多关于如何从明文创建这个散列的例子,但是在这种情况下,我没有明文。我试图从已经加密的md5散列开始生成htpasswd散列。我是否应该编写自己的代码来对其进行更多的哈希运算,并对其进行加盐?我该怎么做 这是在使用PHP5和MySQL的Linux服务器上。在.htpasswd中存储基于MD5

我的数据库中有使用md5加密的用户密码记录。我想让PHP将这些加密密码添加到htpasswd文件中。但是我已经读到htpasswd文件使用了一个MD5算法,该算法重复了1000次,并进行了修改。我在网上找到了很多关于如何从明文创建这个散列的例子,但是在这种情况下,我没有明文。我试图从已经加密的md5散列开始生成htpasswd散列。我是否应该编写自己的代码来对其进行更多的哈希运算,并对其进行加盐?我该怎么做


这是在使用PHP5和MySQL的Linux服务器上。

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

正如您所说,它们是基于md5'ing的1000次,但是如果您这样做,您将看到它在每次迭代中都附加了明文密码

它不仅仅是
md5(md5(md5(…))
,而是一个相当复杂的
md5(密码+盐+密码+md5(md5(…)+盐+密码+密码))

因此,要计算
.htpasswd
md5密码,需要实际的明文密码<代码>md5(密码)对您毫无帮助


那么你能做些什么呢

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

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

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


可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息,以缩小答案集或隔离一个可以在几段中回答的问题。我建议您找一个发展论坛(也许?)来总结概括。然后,当您遇到特定的编码问题时,请返回StackOverflow,我们将很乐意提供帮助。不可能。您不能“解密”散列。您可以强制执行“冲突”的内容并生成相同的哈希,但它不一定与密码的文本完全相同,而且适用于md5的冲突在任何其他哈希算法中都极不可能起作用。非常感谢,这完全回答了我的问题!:)