密码强度检查:与以前的密码比较

Max*_*yko 15 passwords cryptography

我偶尔遇到的应用程序迫使您偶尔更改密码.几乎普遍,他们对新密码有这种奇怪的要求:它必须与以前的密码"显着"不同.

虽然起初这听起来合乎逻辑,但我认为接下来的事情是:他们是如何做到的?他们用纯文本存储我的密码吗?我会接受他们所做的答案,如果不是因为这些类型的应用程序假装关心安全性如此之多,它们会强迫您在密码过期时更改密码!Microsoft Exchange就是其中的一个例子.

我不是很擅长加密和散列函数,所以我的问题是:是否可以在不以明文形式存储密码的情况下强制实施这种策略?

您知道在实际应用中如何实施此策略吗?

更新:一个例子.我最近更改了我的Microsoft Exchange密码.我只使用Web Access,所以它可能会有所不同 - 我不知道.所以,它迫使我改变我的密码.我有时做的是将其更改为新的,然后几乎立即将其更改.奇怪的是,由于这一点,它甚至不允许我改回来.我尝试通过在它前面添加一个字母或更改一个符号来尝试改变它 - 没有运气,它正在抱怨.

Cat*_*lus 8

更改密码时,通常会要求您输入旧密码以确认您的身份.然后,比较旧的和新的,看看它们有多大差异是微不足道的.TBH我不知道如何在不存储密码的情况下与之前的几个密码进行比较,但无论如何都会进入荒谬的政策领域.


ten*_*our 7

使用典型的哈希,您可以做的最好的事情是查看新密码是否之前的密码完全相同.您可以将密码分成多个哈希,以便通过比较获得更灵活,例如3个哈希:

  1. 仅限字母字符
  2. 仅限数字字符
  3. 所有其他角色

例如,您可以要求更改所有哈希值以便接受,以防止用户仅将密码更改SecretPassword01SecretPassword02.

加密专家可能会在这里权衡一下这是否可以像单个哈希一样安全.

请注意,这不像单个哈希那么安全,因此在您实施此功能之前,请确保您已经完成了您的研究.

  • 更通用的方法可能是为此目的存储密码的某些规范表示的散列.什么是规范表示取决于如何定义类似的密码.例如,如果密码是"abC"并且考虑密码"Abc2"与原始密码相同,则他将存储"abc#"的散列. (2认同)