ハッシュとは
ある入力データに対応する、短い値(文字列)です。
衝突可能性
ハッシュは、元の入力データよりも遥かに短い文字列なので(入力データが短い場合を除く)、 違う2つのデータに対し、ハッシュ値が同じになる可能性があります。
原理上は非常に低い確率ですが、MD5やSHA-1については、 「同じハッシュ値を持つデータが作ることが可能」なことが示されています1。 なので「インターネットで一般に公開されるもの」については、SHA-256などを使うべきです。
MD5やSHA-1でもいい場合
例えば、このサイトのCSSファイル、JavaScriptファイルに付けている キャッシュバスティングはMD5を使用しています。 なぜなら、このサイトで使用している目的は、 「ファイルの内容が変わったときに別のファイルとみなす」ためであって、 同じハッシュ値を使って別のファイルができたから困ることはないからです。