【问题标题】:How would i find the string of a hash?我如何找到哈希的字符串?
【发布时间】:2013-03-22 07:45:57
【问题描述】:

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

【问题讨论】:

  • 请给我们一些有效的代码。
  • 如果哈希是可逆的,它们将是一个真正出色的压缩。想一想,即使是千兆字节或更多字节,最终的哈希长度也与单个字符相同......

标签: python string security hash passwords


【解决方案1】:

简单的答案是,您无法根据哈希值重构输入字符串。该函数具有209569 不同的输出值,并且还有更多可能的输入字符串。见Pigeonhole principle

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

【讨论】:

  • 是的,任务是找到一个哈希值为 69731 的字符串。有什么提示吗?我必须暴力破解吗?
【解决方案2】:

我做到了。我只做了 6 个循环并尝试了每个字母组合。当我发现它时,它是一个例外。 5秒内就找到了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-19
    • 2022-06-15
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2017-12-21
    相关资源
    最近更新 更多