Article saying it used as hash function producing a 128-bit hash value. It can still be used as a checksum to verify data integrity, but only against unintentional corruption. So when it's neither encryption nor encoding, Is it only use as securing and verify data integrity but not concern of decoding?

  • $\begingroup$ What do you mean by "concern of decoding"? $\endgroup$ – otus Jan 6 '17 at 7:48
  • $\begingroup$ I mean decode encrypted hash form into decoded (original) value. As encoded message decoding to read it. $\endgroup$ – Swapnil Jan 6 '17 at 9:00

MD5 is a cryptographic hash function, which means it is expected to have several properties. I'll limit this answer to the properties you allude to in your question. The Wikipedia link above explains the rest.

  1. A small change in the input should lead to a totally different output.

  2. Given a hash, it should be infeasible to figure out the original message. This is called preimage resistance.

  3. It should be infeasible to find another message that hashes to the same output. This is called collision resistance.

It turns out that MD5's collision resistance is weak. Thus, it is still okay to use if you are only checking for accidental corruption of a file, since file corruption will produce vastly different hashes, but we can no longer rely on MD5 to assure us that an attacker did not forge the message because it is practical for an attacker to find another message that results in the same MD5 hash. This means we can't use MD5 as part of digital signature schemes, since they rely on a hash function's collision resistance.

However, MD5's preimage resistance is still strong, so if all you care about is a hash that can't be reversed to find the original input, MD5 can still do the job. But quite often you will have other requirements in addition to preimage resistance, so the use of MD5 is not recommended [for security sensitive contexts].


MD5, as you told is a hash function. It generates a 128 bit possibly unique bit pattern for any input. This makes it suitable for verifying the integrity of data transferred between a sender and receiver, which would simply require comparison of the hashes of the data at the sender and receiver. Hash functions are one-way functions. Said that, it is computationally infeasible to reverse a hash to its original input.


Not the answer you're looking for? Browse other questions tagged or ask your own question.