パスワードなどはMD5で保存し、ログイン時は入力値のMD5と保存値を照合して認証。
MD5値は128ビット(16進表記で32文字)の有限長の為、異なる入力値で同じMD5値の可能性があるはず。
数学的な値は検証していないが、次のような工夫を施す。
入力値を x とすると、md5(x) と md5(x') を保存する。
x' は、事前に決めておいたフレーズ文字列と連結した x 。
衝突する可能性が減っただけで、衝突しなくなったわけではない。
●ハッシュ値の衝突確率は意外に高い
MD5だと280回程度の試行で,目的のハッシュ値を出力できる入力値を見つけ出すことができます。
http://itpro.nikkeibp.co.jp/article/COLUMN/20071031/286012/?P=5&ST=lin-os
●ハッシュの値が重複しているものをリストアップする(perl)
http://www.jp-z.jp/perlmemo/list_duplicate_count_hash.html