md5とはMessageDigest 5の略で、一方向ハッシュ関数のひとつ。
ハッシュ値は128bit/16byte固定。
ハッシュ値から元の文章を復元するのが不可能なため、一方向(非可逆)ハッシュ関数と呼ばれる。ハッシュ値には一部偏りが見られることが解っているが、事実上問題無い範囲とされる。
非可逆な性質を使い、ファイルが改ざん/破損していないかの確認や、UNIXなどのパスワード暗号化にも使われる。
ハッシュ値は2^128≒10^38の値を取る事が出来るため、逆に考えると10^38個のファイルの区別に使う事ができるので、ファイルのシリアル番号として使える。事実、インターネット上のP2Pのファイル共有システムWinnyやネットニュースサーバINNにおいて、ファイル/記事のシリアル番号として使われている。しかし、この方法はシリアルの競合が起きる可能性もあるので、信頼性が必要なシステムでは使ってはならない。
RFC 1321で標準化されている。
2004年8月CRYPTOのランプ・セッションで実際にコリジョンを発見したという報告があった。
Eurocrypto2005にてXiaoyun WangとHongbo Yuが"How to Break MD5 and Other Hash Functions"で発表している。