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

Bor*_*rja 6 python md5 salt sha sha512

我试图理解Linux如何在etc/shadow文件上加密我们的密码,所以我没有新的虚拟"测试"用户进行一些测试:

user: newuser
密码: usrpw123
生成的盐: Ii4CGbr7

操作系统在etc/shadow文件中使用SHA512加密系统($ 6 $)使我成为以下行: newuser:$ 6 $ Ii4CGbr7 $ IOua8/oPV79Yp.BwzpxlSHjmCvRfTomZ.bhEvjZVxxxqvv82lZVrEtWQQej2pOWMdN7hvKwNgvCXKFQm5CB /:15069:0:99999:7 :::

现在,我从python中获取SHA512模块并试试这个:

import hashlib
m = hashlib.sha512()
m.update('Ii4CGbr7'+'usrpw123')
print m.hexdigest
Run Code Online (Sandbox Code Playgroud)

这给了我以下哈希作为结果: c73156daca3e31125ce457f1343201cc8a26400b2974440af2cc72687922b48b6631d21c186796ea2756ad987a996d2b261fe9ff3af4cc81e14c3029eac5df55

正如你所看到的,它与/ etc/shadow文件中的另一个不同,我不知道为什么我使用相同的salt +密码来生成哈希.
有人能帮我一把,或多或少解释一下为什么会这样吗?

而且,为什么/ etc/shadow文件生成带有一些点(.)的哈希?
谢谢

ʇsә*_*ɹoɈ 6

/ etc/shadow中的字段不是按照您的想法构建或解释的.您将需要阅读手册页以获取详细信息,但最明显的区别是它对salt和hash使用了不常见的base64编码.


Mat*_*ttH 6

有一种算法可以生成/ etc/shadow中的密码哈希值.

请参阅此文档以获取解释:http:
//www.akkadia.org/drepper/SHA-crypt.txt

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