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: ?
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:
好了,因为有流行的哈希算法有限数,也许你提出什么也不是那么可笑。
但是假设我问你:
如果我有一个输入和输出,我能确定的功能?
一般来说 , 不,你不能确定任何功能的内部工作只是从一个知道输入和一个输出 ,无需任何额外的信息。
// 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.
}
通过查看长度,你可以决定尝试哪些算法。 MD5和MD2产生16字节消化。 SHA-1产生20个字节的输出。 等。然后对输入执行每个散列,看看它是否在输出匹配。 如果是这样,那是你的算法。
当然,如果超过了“钥匙”被散列,你需要知道这一点。 并根据不同的应用,散列经常被反复使用。 也就是说,散列的输出再次散列,并且输出散列......往往数千次。 所以,如果你事先如何进行多次迭代知道,也可以帮助你。
没有什么,除了在加密散列输出长度,这将有助于缩小产生它的算法。
哈希似乎只包含十六进制字符(每个字符代表4位)
总数为32个字符 - >这是一个128位长度的散列。
与这些规格符合标准的哈希算法是:HAVAL,MD2,MD4,MD5和ripemd128。
最高可能性是使用MD5。
MD5( “高”)!= df072c8afcf2385b8d34aab3362020d0
最高可能性是用一些盐。
最高概率仍然MD5。
没有匹配的共同散列算法:
http://www.fileformat.info/tool/hash.htm?text=higher
也许盐是散列之前加...
不低于尝试,你知道了一堆,看是否匹配任何其他。