当前位置: 代码迷 >> python >> 可以基于输出计算此哈希函数的输入吗?
  详细解决方案

可以基于输出计算此哈希函数的输入吗?

热度:59   发布时间:2023-07-14 09:52:50.0

我有以下哈希函数,我想知道是否有一种方法可以基于哈希值计算此函数的输入。 提前致谢

def hash(message):
    key = [0x0f, 0xff, 0x00]
    for char in message:
        n = ord(char)
        key[0] ^= n
        key[1] &= n
        key[2] |= n
    return ’’ + chr(key[0]) + chr(key[1]) + chr(key[2])

总之, 没有有意义的哈希函数可以反向应用。

散列函数的作用是尝试创建原始消息的“签名”。 签名必须足够小,通常用于验证或作为某些存储的索引。

为此,输出域必须显着小于输入域,换句话说,多个输入可能对应于同一输出。 在您的情况下,字符串"000""000000000"将具有相同的哈希值,并且"000000000"哈希就无法将一个与另一个区分开。

就散列函数的第二个原像而言; 只要您有足够的时间和金钱,对于任何哈希函数,就有无数种解决方案。

现在假设,您有时间和金钱,并生成了给定哈希值直至n位的所有可能的第二个前像,并说我们有x个解。

for i in space(1..2^n)
   check hash(i) == TheHash

即使x = 2,攻击者也将无法确定输出哈希值的真实前映像。 但是请记住,从攻击的角度出发,攻击者已经找到x解决方案来破坏您的哈希。

可能,但是除了尝试所有可能的消息外,从其哈希值生成消息是不可行的。

  相关解决方案