md5 と sha1 の比較

ま、きっと sha1 の方が遅いのだろうけど、一応比較。
md5sha1 より古くて、既知の脆弱性あり。だけど速いと言われている。
sha1 は sha256 より古くて、既知の脆弱性あり。
:
コードは以下のコードで loop.php というファイルです。


結果は


md5 =21.559861898422msec
sha1=26.158680915833msec
やはり md5 の方が速かった。
一件辺りの時間はあまり変わらないが(そりゃそーか)、1.2倍ともなると積もり積もると明らかな差が出てくる。

一応 sha256 もやったので結果を見ておこう。


// SHA256
$mesc0 = microtime(true);
for ($i = 0; $i < _COUNT; $i++)
{
hash('sha256', $c);
}
$mesc1 = microtime(true);
echo 'sha256=' . ($mesc1 - $mesc0) . "msec\n";
一応、md5sha1 も同じ関数で作り直した。

md5 =28.687496185303msec
sha1=37.178185939789msec
sha256=92.433423042297msec
単に hash を取るなら md5
セキュリティを考えるなら sha256。
sha1 は・・・

:
:
少し調べてみたら
SHA384(384bits=48bytes)
SHA512(512bits=64bytes)
RIPEMD160(160bits=20bytes)
なんてのもあるみたいです。
当然後で出てきたものの方が強固と言えるかも知れないが、処理時間との兼ね合い。
:
:
と思ったら、SHA384、SHA512、RIPEMD160も sha256 と同じくらいの速度が出てるw
これだけは知っておきたいアルゴリズム〜ハッシュ関数・公開鍵暗号・デジタル署名編 − @ITを読むとなるほどとわかる。
単に余分なビットを切り落としている・・・