这是我老师写的代码(python)。 (使用强力发现的素数)。 我还有一些测试数据,其中包含具有匹配哈希值的密码(现在我发现函数中使用了两个素数,这并不重要。)
任何人都可以帮助我找到一种方法来扭转"这个或至少给我一个提示?
def prime_number_hash(s , 17299, 209569):
"""
Will hash the string s using the two prime numbers p and n.
"""
h = 0
for k,l in enumerate(s):
v = ord(l)
# k is the index of the letter
h += v * pow(p,k)
return h % n
答案 0 :(得分:4)
简单的答案是,您无法在给定哈希值的情况下重建输入字符串。该函数具有209569
个不同的输出值,并且还有更多可能的输入字符串。请参阅Pigeonhole principle。
如果任务是找到具有给定哈希的 字符串,那就是另一个问题......
答案 1 :(得分:0)
我做到了。我只做了6个循环并尝试了这封信的每一个组合。当我发现它时会爆发一个例外。 它在5秒内被发现。