netbsd - sha1 的奇怪散列格式

netbsd - weird hash format for sha1

在我的 NetBSD 系统上,master.passwd 中有一个密码散列,如下所示:

$sha1$[5 numbers]$[8 letters]$[17 alpha numeric].[10 alpha numeric]

出于隐私考虑,我省略了实际值。有人愿意解释其中的不同部分吗?我的印象是 SHA1 产生 20 个字节,所以我很困惑什么部分是实际哈希,什么部分是盐,还有什么部分是其他所有内容。

相关部分可以在NetBSD中找到src/lib/libcrypt

对于格式:crypt-sha1.c

The format of the encrypted password is:
$<tag>$<iterations>$<salt>$<digest>
where:
    <tag>       is "sha1"
    <iterations>    is an unsigned int identifying how many rounds
            have been applied to <digest>.  The number
            should vary slightly for each password to make
            it harder to generate a dictionary of
            pre-computed hashes.  See crypt_sha1_iterations.
    <salt>      up to 64 bytes of random data, 8 bytes is
            currently considered more than enough.
    <digest>    the hashed password.

摘要为 160 位 = 20 字节,但使用 base64(4 字节用于 3 个源字节)编码为 28 字节(1 个零填充字节)。请参阅 util.c