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

标签 python md5 salt sha sha512

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

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

因此,操作系统使用 SHA512 加密系统($6$)在 etc/shadow 文件中添加了以下行: 99999:7:::

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

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

这给了我以下散列作为结果: c73156daca3e31125ce457f1343201cc8a26400b2974440af2cc72687922b48b6631d21c186796ea2756ad987a996d2b261fe9ff3af4cc81e14c3029eac5df55

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

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

最佳答案

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

关于python - Python MD5、SHA512 (+salt) 加密的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5549102/

相关文章:

python - FastApi Users Auth,无法添加额外的注册字段

security - 公开暴露盐是否可以接受?

hash - 可以将用户的盐与密码哈希保存在同一个表中吗?

md5 - 散列函数保证唯一?

javascript - 如何在 JavaScript/Node.js 中生成 MD5 文件哈希?

hash - 使用 HMAC 进行消息签名时,对 key 、消息或两者加盐是否明智?

python - 如何制作一个背景颜色为用户选择的颜色的标签?

python - python 中的 __qualname__ 是什么?

python - python3 open "x"模式有什么作用?

php - 在恢复密码电子邮件中使用 md5 密码作为 token 有多不安全?