Dorin Botan Asked: 2018-03-15 02:44:13 +0800 CST2018-03-15 02:44:13 +0800 CST 2018-03-15 02:44:13 +0800 CST 如何找到用于散列密码的散列算法? 772 我有工作密码并且可以看到哈希 (/etc/passwd)。如何找到用于散列密码的散列算法,而无需手动尝试不同的算法,直到找到匹配项? passwd hashsum 1 个回答 Voted Best Answer Stephen Kitt 2018-03-15T02:57:45+08:002018-03-15T02:57:45+08:00 这在crypt(3)'s 手册页中有记录,您可以通过 shadow(5)'s 手册页或passwd(5)'s . 这些链接适用于现代基于 Linux 的系统;那里的描述是: 如果salt是一个以字符 "$ 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) Blowfish,也称为bcrypt,也由前缀2、2b、2x和标识2y(请参阅PassLib 的文档)。 所以如果一个哈希密码是以上述格式存储的,你可以通过查看id找到使用的算法;否则它crypt是默认的 DES 算法(带有 13 个字符的散列),或“big”crypt的 DES(扩展为支持 128 个字符的密码,散列长度最多为 178 个字符),或 BSDI 扩展的 DES(带有_前缀后跟一个 19 个字符的散列)。 一些发行版使用libxcrypt,它支持并记录了更多的方法: y: 是的加密 gy: gost-yescrypt 7: 加密 sha1: sha1crypt md5: 孙MD5 其他平台支持其他算法,因此请查看crypt那里的联机帮助页。例如,OpenBSDcrypt(3)仅支持 Blowfish,它使用id “2b”来识别。
这在
crypt(3)
's 手册页中有记录,您可以通过shadow(5)
's 手册页或passwd(5)
's . 这些链接适用于现代基于 Linux 的系统;那里的描述是:Blowfish,也称为
bcrypt
,也由前缀2
、2b
、2x
和标识2y
(请参阅PassLib 的文档)。所以如果一个哈希密码是以上述格式存储的,你可以通过查看id找到使用的算法;否则它
crypt
是默认的 DES 算法(带有 13 个字符的散列),或“big”crypt
的 DES(扩展为支持 128 个字符的密码,散列长度最多为 178 个字符),或 BSDI 扩展的 DES(带有_
前缀后跟一个 19 个字符的散列)。一些发行版使用libxcrypt,它支持并记录了更多的方法:
y
: 是的加密gy
: gost-yescrypt7
: 加密sha1
: sha1cryptmd5
: 孙MD5其他平台支持其他算法,因此请查看
crypt
那里的联机帮助页。例如,OpenBSDcrypt(3)
仅支持 Blowfish,它使用id “2b”来识别。