Linux如何比较新旧密码?

Linux如何比较新旧密码?

我知道在 Linux(至少是 debian)上,每个密码都经过哈希处理并存储在/etc/shadow.

不过,多亏了libpam-cracklib您可以添加一些密码规则。例如,/etc/pam.d/common-password您可以设置Difok一个参数,指示旧密码和新密码之间可以相同的字母数。

但是,当我输入新密码时,Linux 如何知道与旧密码的相似性,因为它不知道我的真实密码(它只有一个哈希值)?

谢谢 !

答案1

当您要求 PAM 模块更改密码(或参与更改密码)时,该模块可以检索用户指定的新密码和旧密码:克里斯托弗指出,passwd要求提供旧密码和新密码(除非您将其作为root其他用户的密码运行并更改)。该模块可以使用该信息来比较两个密码,而无需以某种方式反转当前哈希或枚举变体。

涉及的PAM功能包括pam_sm_chauthtokpam_get_item,其文档(以及其中引用的其他页面)应该可以帮助您了解正在发生的事情。你可以在libpam-cracklib中看到它是如何完成的源代码

相关内容