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

时间:2018-09-22 17:34:52

标签: python hash cryptography

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

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])

3 个答案:

答案 0 :(得分:0)

总而言之,。不能反向应用有意义的哈希函数。

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

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

答案 1 :(得分:0)

根据散列函数的第二个原像;只要您有足够的时间和金钱,任何哈希函数的解决方案就很多。

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

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

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

答案 2 :(得分:0)

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