我的服务器上有一个受保护的页面,但我忘记了该页面的密码。好的,我可以更改该密码,但这会很麻烦,因为我将该密码存储在许多使用它们访问目录的系统中。我可以看到 .passwords 文件,类似于
我的用户名:$aprX8XYAJG.../O5E1
我可以使用 UNIX 上的命令来生成那串冗长的字符串到终端,以便我可以比较两者并查看是否匹配?
我的意思是生成一个文件而不干扰或在系统中创建新的用户或密码。
答案1
根据每个系统上哈希的来源,您在多个系统上比较哈希的计划可能会或可能不会产生您想要的结果。
哈希是单向映射函数理论上来说,对于给定的输入,它总是会产生相同的结果,而对于其他输入,它不会产生相同的字符串。问题是,有很多哈希算法,有些则在进行哈希处理之前以可预测的方式改变输入(称为“对哈希进行加盐”)其他人使用可变数量的“轮次”,其中结果哈希被重新哈希多次。
如果使用相同的哈希算法创建哈希,并且没有使用特定于机器的盐,则两个系统都会为相同的密码生成相同的哈希,并且您的计划将会奏效。
然而,如果每个盒子上生成哈希值的机制不同,或者它们包含系统特定的盐令牌,那么不会,相同的密码会在每个系统上生成不同的哈希值输出,因此您可能会看到两个不同的哈希值,而不知道它们是否基于相同的密码输入。
有关 Linux PAM 如何在 /etc/passwd 和 /etc/shadow 中使用散列的详细信息,请参阅此处:https://wiki.archlinux.org/index.php/SHA_password_hashes