【发布时间】:2017-11-16 09:41:54
【问题描述】:
我在 java 中有一个程序,它接受一个输入字符串并使用 MD5 算法生成一个哈希值。该程序在每次迭代中搜索生成的哈希字符串中的特定模式(例如 118855),方法是通过在输入字符串的最后一部分附加一个整数来改变输入字符串的最后一部分,该整数在每次迭代中加一。
例如,如果输入字符串是 xyz,那么我将首先找到 xyz0 的哈希值,然后是 xyz1 的哈希值,然后是 xyz2 的哈希值,因此不使用 MD5。在每次传递中,它将在每个哈希值中搜索一个模式,例如 12345。在找到此模式之前,程序不会停止。
现在我的问题是如何避免在这些生成的哈希字符串中搜索这种模式时使用蛮力方法。换句话说,我怎样才能将整数跳跃一个动态值而不是每次一个?
注意:以上所有哈希都是使用 MD5 生成的。我不要求更换 MD5。另外,我没有发现两个哈希值的冲突。我关心的是在这些生成的哈希值中找到给定的子字符串模式。
【问题讨论】:
-
存在许多强大且经过验证的加密算法。确定要自己动手吗?
-
@IstvánRábel 不想用我自己的算法来替换 MD5。我刚刚更新了我的问题以使其清楚。
-
啊,我的错。误解了你的问题。现在更清楚了 :) 在这种情况下,您可能会坚持使用蛮力,因为散列的重点是您无法真正找出相反的方向。
-
需要更多信息,请参阅我对@Ralf Kleberhoff 提供的答案的评论。
标签: java dynamic hash brute-force