如何找到用于哈希密码的哈希算法?

如何找到用于哈希密码的哈希算法?

我有工作密码并且可以看到哈希值(/etc/passwd)。如何找到用于散列密码的散列算法,而无需手动尝试不同的算法直到找到匹配项?

答案1

这记录在crypt(3)的联机帮助页,你可以找到通过 shadow(5)的联机帮助页, 或者passwd(5)。这些链接适用于现代基于 Linux 的系统;那里的描述是:

如果是一个以字符“$开头的字符串ID$”后跟一个可选地以“$”结尾的字符串,则结果的形式为:

$id$salt$encrypted

ID标识使用的加密方法而不是 DES,然后确定如何解释密码字符串的其余部分。支持以下 id 值:

ID  | Method
─────────────────────────────────────────────────────────
1   | MD5
2a  | Blowfish (not in mainline glibc; added in some
    | Linux distributions)
5   | SHA-256 (since glibc 2.7)
6   | SHA-512 (since glibc 2.7)

河豚,也称为bcrypt,也通过前缀22b2x和进行识别2y进行识别(请参阅PassLib 的文档)。

因此,如果散列密码以上述格式存储,您可以通过查看来找到所使用的算法ID;否则它是crypt默认的 DES 算法(具有 13 个字符的哈希值),或“big”crypt的 DES(扩展为支持 128 个字符的密码,哈希值长度可达 178 个字符),或 BSDI 扩展 DES(具有_前缀后跟 19 个字符的哈希值)。

一些发行版使用libxcrypt它支持和文件还有很多方法:

  • y: 是的加密
  • gy: gost-yescrypt
  • 7: 加密
  • sha1: sha1crypt
  • md5:SunMD5

其他平台支持其他算法,因此请检查crypt那里的联机帮助页。例如,OpenBSD 的crypt(3)仅支持 Blowfish,它使用ID“2b”。

相关内容