什么是 FreeBSD MD5,为什么它会生成非十六进制表示法的散列值?

What is FreeBSD MD5 and why does it produce hashes in non-hexadecimal notation?

我正在通过 Hack This Site 进行黑客挑战,我在其中找到了一个密码哈希值,然后通过暴力破解的可能性对其进行了破解。我的哈希破解者 (John the Ripper) 使用的格式称为 "FreeBSD MD5"。密码和散列如下: 密码:阴影 哈希值:$1$AAODv...$gXPqGkIO3Cu6dnclE/sok1

我的问题是,MD5 通常只有字符集 0123456789abcdef(十六进制)吗?为什么这个哈希值突然包含了一堆其他字符?

截图:

这是加盐密码哈希:

  • $ 是字段分隔符
  • 1是类型(MD5)
  • AAODv... 是散列的(明文)盐
  • gXPqGkIO3Cu6dnclE/sok1是base64编码的hash

盐在散列之前与密码连接以防止彩虹表:md5(盐+密码))并验证密码,它必须在散列之前以该盐为前缀。

用 base64 表示散列使其比十六进制数字短一点(23 对 32 字节)。