我如何找到哈希的字符串?

时间:2013-04-01 08:17:12

标签: python string security hash passwords

这是我老师写的代码(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

2 个答案:

答案 0 :(得分:4)

简单的答案是,您无法在给定哈希值的情况下重建输入字符串。该函数具有209569个不同的输出值,并且还有更多可能的输入字符串。请参阅Pigeonhole principle

如果任务是找到具有给定哈希的 字符串,那就是另一个问题......

答案 1 :(得分:0)

我做到了。我只做了6个循环并尝试了这封信的每一个组合。当我发现它时会爆发一个例外。 它在5秒内被发现。