Ben*_*Ben 3 encryption hash salt .htpasswd
是否可以在.hpasswd文件中为密码添加盐?我假设没有,因为服务器需要每个用户的盐以验证密码,我不能想到它将如何获得它们,但否则如果要获得列表它将是相当脆弱的.有解决方案吗?
非常感谢你的帮助,本
默认情况下,htpasswd使用标准的crypt函数,因此密码已经被加密 - 请注意,在此示例中,两个用户都使用相同的密码,但哈希值不同:
simon@diablo:~$ htpasswd -b -c htpasswd simon abcd Adding password for user simon simon@diablo:~$ htpasswd -b htpasswd simon2 abcd Adding password for user simon2 simon@diablo:~$ cat htpasswd simon:NWvm/LCCxQ64E simon2:2I.LBzsRqULN6
(注意:-b通常不鼓励该标志,因为其他用户可以看到您的命令行参数,因此密码)
哈希的前两个字符是盐; 通过crypt()再次呼叫验证密码.输入错误的密码会产生一个与散列密码不相等的字符串:
>>> from crypt import crypt
>>> crypt("wrongpass", "NWvm/LCCxQ64E")
'NWbxQgX1unvso'
Run Code Online (Sandbox Code Playgroud)
而正确的密码产生预期的哈希:
>>> crypt("abcd", "NWvm/LCCxQ64E")
'NWvm/LCCxQ64E'
Run Code Online (Sandbox Code Playgroud)
htpasswd -m 使用基于MD5的不同算法并使用更长的盐:
simon@diablo:~$ htpasswd -m -b -c htpasswd simon abcd Adding password for user simon simon@diablo:~$ cat htpasswd simon:$apr1$mfvnBVmG$iIHIHOaH9vcImG5G.8eVa/
这里,盐是第二个和第三个之间的8个字符$.
htpasswd -s存储没有盐的SHA-1消化物; 这似乎是为了与Netscape/LDIF兼容:
simon@diablo:~$ htpasswd -s -b -c htpasswd simon abcd
Adding password for user simon
simon@diablo:~$ htpasswd -s -b htpasswd simon2 abcd
Adding password for user simon2
simon@diablo:~$ cat htpasswd
simon:{SHA}gf6L/odXbD7LIkJvjleEc4KRes8=
simon2:{SHA}gf6L/odXbD7LIkJvjleEc4KRes8=
这些可以很容易地反转 - 转换为十六进制摘要:
>>> "".join("%02x" % ord(c)
... for c in "gf6L/odXbD7LIkJvjleEc4KRes8=".decode("base64"))
'81fe8bfe87576c3ecb22426f8e57847382917acf'
Run Code Online (Sandbox Code Playgroud)
然后使用在线哈希数据库.
| 归档时间: |
|
| 查看次数: |
10821 次 |
| 最近记录: |