为什么用 sha512 散列的影子密码包含 99 个字符而不是 129 个字符?

Grz*_*orz 0 linux pam

我的 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:::
Run Code Online (Sandbox Code Playgroud)

请注意,密码哈希从开始,$6$所以它表示它是sha512哈希。

小智 6

散列以 base64 格式存储,这意味着一个字符编码 6 位。所以需要 512 / 6 = 86 个(四舍五入)字符。

散列在第三个(不是第二个)$ 之后开始,在下一个正好是 86 个字符的冒号之前结束。YwkRWeVN2nd 和 3rd $ 之间的字符串称为salt