Python MD5、SHA512(+salt)加密的问题

2024-10-01 17:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试理解Linux是如何加密etc/shadow文件上的密码的,因此我没有新的虚拟“test”用户来进行一些测试:

用户:新用户
密码:usrpw123
生成盐:Ii4CGbr7

因此,操作系统使用SHA512加密系统($6$)在etc/shadow文件上生成以下行:newuser:$6$Ii4CGbr7$IOua8/oPV79Yp.BwzpxlSHjmCvRfTomZ.bhevjzv2x5qhrvk82lzvretwqej2powmdn7hvkwngvcxkfqm5cb/:15069:0:99999:7:::

现在,我从python获取SHA512模块并尝试以下操作:

import hashlib
m = hashlib.sha512()
m.update('Ii4CGbr7'+'usrpw123')
print m.hexdigest

结果得到了以下哈希值: C73156DACA3E31125CE457F1343201CC8A26400B2974440AF2CC72687922B48B6631D21C186796EA2756AD987A996D2B261FE9FF3AF4C81E14C3029EA5DF55

如您所见,它与/etc/shadow文件中的另一个不同,我不知道为什么我使用相同的salt+密码来生成哈希值。
有人能帮我解释一下为什么会这样吗?在

另外,为什么/etc/shadow文件会生成一个带有点(.)的散列?
谢谢


Tags: 文件用户test密码linux系统etchashlib
3条回答

/etc/shadow中的字段不是按照您认为的方式构建或解释的。您可能想阅读man page以了解详细信息,但最明显的区别是它对salt和hash都使用了不寻常的base64编码。在

我陷入了同样的陷阱,因为我读到的每一件事都让我相信你可以用你写的同样的方式来检索结果。在

我可以通过使用salt和密码来确定密码地下室,地下室()

import crypt
crypt.crypt(password, salt)

盐:6美元Ii4CGbr7 密码:usrpw123

不完全使用hashlib库,但它可以工作。在

在/etc/shadow中有一个生成密码哈希的算法。在

有关说明,请参阅本文档:
http://www.akkadia.org/drepper/SHA-crypt.txt

这里有一个在python中实现的:
http://packages.python.org/passlib/lib/passlib.hash.sha512_crypt.html

相关问题 更多 >

    热门问题