md5 と sha1 の比較
ま、きっと sha1 の方が遅いのだろうけど、一応比較。
md5 は sha1 より古くて、既知の脆弱性あり。だけど速いと言われている。
sha1 は sha256 より古くて、既知の脆弱性あり。
:
コードは以下のコードで loop.php というファイルです。
結果は
やはり md5 の方が速かった。
md5 =21.559861898422msec
sha1=26.158680915833msec
一件辺りの時間はあまり変わらないが(そりゃそーか)、1.2倍ともなると積もり積もると明らかな差が出てくる。一応 sha256 もやったので結果を見ておこう。
一応、md5、sha1 も同じ関数で作り直した。
// SHA256
$mesc0 = microtime(true);
for ($i = 0; $i < _COUNT; $i++)
{
hash('sha256', $c);
}
$mesc1 = microtime(true);
echo 'sha256=' . ($mesc1 - $mesc0) . "msec\n";単に hash を取るなら md5。
md5 =28.687496185303msec
sha1=37.178185939789msec
sha256=92.433423042297msec
セキュリティを考えるなら sha256。
sha1 は・・・:
:
少し調べてみたら
SHA384(384bits=48bytes)
SHA512(512bits=64bytes)
RIPEMD160(160bits=20bytes)
なんてのもあるみたいです。
当然後で出てきたものの方が強固と言えるかも知れないが、処理時間との兼ね合い。
:
:
と思ったら、SHA384、SHA512、RIPEMD160も sha256 と同じくらいの速度が出てるw
これだけは知っておきたいアルゴリズム〜ハッシュ関数・公開鍵暗号・デジタル署名編 − @ITを読むとなるほどとわかる。
単に余分なビットを切り落としている・・・