我试图了解 Linux 如何在 etc/shadow 文件上加密我们的密码,所以我没有新的虚拟“测试”用户进行一些测试:
用户: newuser
密码: usrpw123
生成的盐: Ii4CGbr7
因此,操作系统使用 SHA512 加密系统 ($6$) 在 etc/shadow 文件中生成以下行: newuser:$6$Ii4CGbr7$IOua8/oPV79Yp.BwzpxlSHjmCvRfTomZ.bhEvjZV2x5qhrvk82lZVrEtWQQej2pOWMdN7hvKwNgvCXKFQm5999/:157::::::
现在,我从 python 中获取 SHA512 模块并尝试以下操作:
import hashlib
m = hashlib.sha512()
m.update('Ii4CGbr7'+'usrpw123')
print m.hexdigest
结果,这给了我以下哈希: c73156daca3e31125ce457f1343201cc8a26400b2974440af2cc72687922b48b6631d21c186796ea2756ad987a996d2b261fe9ff3af4cc81e14c3029eac5df55
如您所见,它与 /etc/shadow 文件中的另一个不同,我不知道为什么我使用相同的 salt+密码来生成哈希。
有人可以帮我解释一下为什么会发生这种情况吗?
另外,为什么 /etc/shadow 文件会生成带有一些点 (.) 的散列?
谢谢