Linux用来散列用户密码的算法是什么?我如何在PHP中实现该算法?使用Linux用来散列用户密码的算法散列字符串?
0
A
回答
1
您可能需要了解有关Linux密码存储格式的一些背景信息 - 特别是在您实际实现自己的密码配置之前,尤其需要配置阴影密码。
在使用glibc2的Linux发行版上,散列函数有一个'魔术位',并以salt为前缀。
魔术位以 '$ X $' 开始关闭,并用于确定已使用的散列函数:
- $ 1 $为MD5 $为河豚
- $ 2,
- $ 5 $对于SHA-256和
- $ $ 6 SHA-512
(如NetBSD的其他UNIX系统可能有这种不同的值)。
魔术比特然后跟随8比特构成盐,并可选地由另一个“$”终止。在这个和下一个“$”之间,你会发现实际的密码散列。
现在几乎所有的现代Linux系统都不会将密码存储在世界可读的/etc/passwd
中。相反,密码在/etc/shadow
中被映射,其中只有root允许读取权限。如果使用的是密码密码方案,/etc/passwd
文件将显示一个字符,如'*'或'x'而不是密码。
一个典型的密码在/etc/shadow
的格式将是这样的:
$a:$b:$c:$e:$f:$g:$h:$i
其中:
$一个:用户名
$ B:盐和散列密码(如上所述)。如果这是“NP”或“!”或null,那么这意味着该帐户没有密码。 “LK”或“*”表示账户被锁定,用户将无法登录。 “!!“表示口令已过期
$ C:自从上次密码更改的划时代
$ d天:天,直到发生变化,允许
$è:变更前的天数需要
$ f:过期天数警告
$ G:帐户之前天没有活性
$ H:天纪元以来,当帐户到期
$ I:留作将来使用。 http://configuration.logfish.net/index.php/etc/shadow
参考文献::
一个阴影密码文件的例子可以在以下网址找到
1
尝试使用PHP crypt
function。
相关问题
- 1. 字符串散列算法
- 2. 散列用户密码
- 3. 使用HTTPS时散列用户密码
- 4. 如何在java中使用散列函数来散列密码?
- 5. 使用SHA-512和salt来散列MD5散列密码?
- 6. 使用md5散列密码
- 7. Windows 10使用什么散列算法来存储密码?
- 8. Cake 1.3使用哪个算法来散列密码?
- 9. 在这里使用哪种算法来散列密码?
- 10. 字符串的散列码
- 11. 散列字符串的最佳算法
- 12. 在Bash中使用密码散列字符串
- 13. 散列用户密码中的Cookie
- 14. “不能使用字符串作为散列引用”散列散列的散列值
- 15. 禁用Wordpress密码散列
- 16. LM散列,散列一个长于14个字符的密码
- 17. 散列密码
- 18. 散列密码
- 19. 密码散列
- 20. 散列密码
- 21. 散列密码
- 22. asp.net:存储密码散列算法
- 23. MongoDB用于散列数据库用户密码的散列函数是什么?
- 24. 什么密码散列算法确实使用?
- 25. Rails authlogic密码散列算法只使用红宝石
- 26. PHP重写密码散列函数使用什么算法?
- 27. 使用自定义用户登录时出现“未知密码散列算法”
- 28. 计算字符串的MD5散列阶
- 29. 散列密码字段
- 30. 字符串的通用散列函数
'crypt()'函数是否总是使用与OS使用的盐相同的salt? – powerboy 2011-06-16 05:08:22
@powerboy:不;你必须自己提供盐。 – icktoofay 2011-06-17 02:49:12