我有工作密码并且可以看到哈希值 (/etc/passwd)。如何找到用于散列密码的散列算法,而无需手动尝试不同的算法,直到找到匹配项?
Ste*_*itt 28
这记录在crypt(3)的联机帮助页中,您可以通过 shadow(5)的联机帮助页或passwd(5)的. 这些链接适用于基于 Linux 的现代系统;那里的描述是:
如果salt是一个以字符“$ id $”开头的字符串,后跟一个可选地以“$”结尾的字符串,则结果具有以下形式:
Run Code Online (Sandbox Code Playgroud)$id$salt$encryptedid标识使用的加密方法而不是 DES,然后它确定如何解释密码字符串的其余部分。支持以下 id 值:
Run Code Online (Sandbox Code Playgroud)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,也被确定前缀2,2b,2x,和2y(见PassLib的文档)。
因此,如果以上述格式存储散列密码,则可以通过查看id找到使用的算法;否则它crypt是默认的 DES 算法(带有 13 个字符的散列),或“big”crypt的 DES(扩展为支持 128 个字符的密码,散列长度最多为 178 个字符),或 BSDI 扩展的 DES(带有_前缀)后跟一个 19 个字符的哈希值)。
y: 是加密gy: gost-yescrypt7: 加密sha1: sha1cryptmd5: SunMD5其他平台支持其他算法,因此请查看crypt那里的联机帮助页。例如,OpenBSDcrypt(3)只支持 Blowfish,它使用id “2b”来标识。