我能确定基于初始密钥和输出的哈希散列算法?(Can I identify a hash algori

2019-08-07 12:52发布

If I have both the initial key and the hash that was created, is there any way to determine what hashing algorithm was used?

For example:

  • Key: higher
  • Hash: df072c8afcf2385b8d34aab3362020d0
  • Algorithm: ?

Answer 1:

好了,因为有流行的哈希算法有限数,也许你提出什么也不是那么可笑。

但是假设我问你:

如果我有一个输入和输出,我能确定的功能?

一般来说不,你不能确定任何功能的内部工作只是从一个知道输入和一个输出 ,无需任何额外的信息。

// very, very basic illustration
if (unknownFunction(2) == 4) {
    // what does unknownFunction do?
    // return x + 2?
    // or return x * 2?
    // or return Math.Pow(x, 2)?
    // or return Math.Pow(x, 3) - 4?
    // etc.
}


Answer 2:

通过查看长度,你可以决定尝试哪些算法。 MD5和MD2产生16字节消化。 SHA-1产生20个字节的输出。 等。然后对输入执行每个散列,看看它是否在输出匹配。 如果是这样,那是你的算法。

当然,如果超过了“钥匙”被散列,你需要知道这一点。 并根据不同的应用,散列经常被反复使用。 也就是说,散列的输出再次散列,并且输出散列......往往数千次。 所以,如果你事先如何进行多次迭代知道,也可以帮助你。

没有什么,除了在加密散列输出长度,这将有助于缩小产生它的算法。



Answer 3:

  1. 哈希似乎只包含十六进制字符(每个字符代表4位)

  2. 总数为32个字符 - >这是一个128位长度的散列。

  3. 与这些规格符合标准的哈希算法是:HAVAL,MD2,MD4,MD5和ripemd128。

  4. 最高可能性是使用MD5。

  5. MD5( “高”)!= df072c8afcf2385b8d34aab3362020d0

  6. 最高可能性是用一些盐。

  7. 最高概率仍然MD5。



Answer 4:

没有匹配的共同散列算法:

http://www.fileformat.info/tool/hash.htm?text=higher

也许是散列之前加...



Answer 5:

不低于尝试,你知道了一堆,看是否匹配任何其他。



文章来源: Can I identify a hash algorithm based on the initial key and output hash?