我的 Linux 配置为使用sha512
。然而,该/etc/shadow
文件包含只有 99 个字符的哈希密码。为什么是 99 而不是 129(64*2+1)?请注意,我在确保系统设置为使用 sha512 后更改了密码。
请查看输出:
# grep sha512 /etc/pam.d/system-auth-ac
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
# grep ENCRYPT_METHOD /etc/login.defs
ENCRYPT_METHOD SHA512
# grep root /etc/shadow
root:$6$YwkRWeVN$z4Z7OKuohyyT/4gZgnOkKSWPaMvx1eCHFGNCiyFZx1QYydrEArO.HdH2JGCfosXg0sTnZFFdJnfw5QgfUqovO1:16175:0:99999:7:::
请注意,密码哈希以 开头,$6$
因此表示它是sha512
哈希。
答案1
哈希以 base64 格式存储,这意味着一个字符编码 6 位。因此需要 512 / 6 = 86(四舍五入)个字符。
哈希从第三个(不是第二个)$ 开始,到下一个冒号结束,正好是 86 个字符。YwkRWeVN
第二个和第三个 $ 之间的字符串称为盐。