If I have both the initial key and the hash that was created, is there any way to determine the hash algorithm?
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 the hash algorithm?
For example:
Key: higher
Hash: df072c8afcf2385b8d34aab3362020d0
Algorithm = ?
Not other than trying out a bunch that you know and seeing if any match.
didnt match any of those:
http://www.fileformat.info/tool/hash.htm?text=higher
Or even those:
http://www.webwiki.de/hashes/f/fa/fa2/fa2ec87a2e6783b2193f71bfdf0f9cc8
1) The hash seems to contain only hexadecimal characters (each character represents 4bits)
2) Total count is 32 characters -> this is a 128-bits length hash.
3) Standard hashing algorithms that comply with these specs are: haval, md2, md4, md5 and ripemd128.
4) Highest probability is that MD5 was used.
5) md5("higher") != df072c8afcf2385b8d34aab3362020d0
6) Highest probability is that some salt was used.
7) Highest probability still remains MD5. :)
sb
Well, given that there are a finite number of popular hash algorithms, maybe what you propose is not so ridiculous.
But suppose I asked you this:
If I have an input and an output, can I determine the function?
Generally speaking, no, you cannot determine the inner-workings of any function simply from knowing one input and one output, without any additional information.
// 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.
}
It could be anything but I would try MD5 or HMAC-MD5 first because they are most popular 16-byte hash algorithms.