如何将文本的子字符串与散列密码进行比较

时间:2016-12-20 22:36:49

标签: java hash

我正在尝试将用户输入的一些文本与散列密码进行比较,以查看它们是否完全相似。 例如:如果输入的文字是:传递 1234,如果未使用的密码是:我的传递 64,那么这将被视为传递。

我有几种方法可以考虑这样做,但我想确保选择正确或最好的方法。

以下是我到目前为止所考虑的一些选项:

1)我可以对输入的文本进行散列并将其子串与已经散列的密码的子串进行比较,看看它们是否共享任何公共子串

2)以某种方式反转散列密码并将纯文本密码与输入的文本进行比较,看看是否存在任何常见的子串(不确定这是不是很好)

我目前倾向于第一个选项,因为我认为最大限度地减少用户密码未被删除的时间将减少窗口和攻击的机会。

这些选项中的任何一个都是检查文本是否类似于哈希密码的正确方法吗?

编辑:这样做的目的是为了防止用户输入与新密码类似的密码,如果他们想要更改或重置密码。

2 个答案:

答案 0 :(得分:3)

如果有任何方式,我会感到惊讶。这将完全破坏哈希的安全性 - 哈希的整个想法是类似的输入给出不同的哈希。

答案 1 :(得分:-1)

您认为给定完整密码字符串的某些子字符串将具有与密码相似的哈希值。你最有可能创建md5 ..所以选项超出了范围。

对于#2)如果你可以对md5密码进行逆向工程(我希望是这样),那么这个世界上的问题比你的更大。 :)<我不认为有可能用普通电脑逆向工程md5哈希,可能是超级计算机可以。

我不清楚为什么你会让他们通过部分密码,如果他们只是键入" s"或" a" - 只有一个炭..

我能想到的唯一方法是使用加密技术创建自己的加密并自行解密。