我试图将用户输入的一些文本与哈希密码进行比较,看看它们是否相似。 例如:如果输入的文本是:pass1234,并且未散列的密码是:mypass64,那么这将被视为通过。
我考虑过几种方法来做到这一点,但我想确保我选择了正确或最好的一种。
以下是我到目前为止想到的一些选项:
1) 我可以对输入的文本进行哈希处理,并将其子字符串与已哈希密码的子字符串进行比较,看看它们是否共享任何公共(public)子字符串
2)以某种方式反转哈希密码,并将纯文本密码与输入的文本进行比较,看看是否存在任何公共(public)子字符串(不确定这是否是一个好的做法)
我目前倾向于第一个选项,因为我认为最大限度地减少用户密码未散列的时间将减少攻击的窗口和机会。
这些选项是否是检查文本是否与哈希密码相似的正确方法?
编辑:这样做的全部目的是为了防止用户在想要更改或重置密码时输入与新密码相似的密码。
最佳答案
如果有任何方式,我会感到惊讶。这将完全破坏散列的安全性 - 散列的整个思想是相似的输入给出不同的散列。
关于java - 如何将文本的子字符串与哈希密码进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41252324/