1. ホーム
  2. hash

[解決済み] MD5ハッシュの計算は、SHAファミリー関数よりもCPU負荷が低いですか?

2022-07-03 12:26:23

質問

MD5 ハッシュの計算は、ラップトップの x86 ハードウェア上で SHA-1 や SHA-2 よりも CPU 負荷が低いのでしょうか。私は、特定のチップに特化した情報ではなく、一般的な情報に興味があります。

UPDATE。 私の場合、あるファイルのハッシュを計算することに興味があります。もしファイルサイズが重要なら、300Kと仮定しましょう。

どのように解決するのですか?

はい、MD5 は多少 CPU 負荷が低くなっています。私の Intel x86 (Core2 Quad Q6600, 2.4 GHz, 1 コア使用) では、32 ビット モードでこれが表示されます。

MD5       411
SHA-1     218
SHA-256   118
SHA-512    46

で、これを64ビットモードで

MD5       407
SHA-1     312
SHA-256   148
SHA-512   189

数値は1秒あたりのメガバイトで、"long"メッセージの場合です(8kBより長いメッセージではこのようになります)。これは sphlib という、C(とJava)のハッシュ関数実装のライブラリです。すべての実装は同じ作者 (私) によるもので、同等の最適化努力で作られています。したがって、速度の違いは、関数に本当に内在するものと考えることができます。

比較のポイントとして、最近のハード ディスクが約 100 MB/s で動作し、USB 経由のものは 60 MB/s 以下であることを考慮してください。SHA-256 がここで遅いように見えても、ほとんどの目的には十分速いのです。

以下のことに注意してください。 OpenSSL は SHA-512 の 32 ビット実装を含んでおり、私のコードよりもかなり高速です(ただし 64 ビット SHA-512 ほど高速ではありません)。

編集してください。 について このページ ( アーカイブ をクリック)、多くのハッシュ関数の速度に関するレポートを見つけることができます( "Telechargez maintenant" リンクをクリックしてください)。このレポートはフランス語ですが、ほとんど表と数字で埋め尽くされており、数字は国際的なものです。実装されているハッシュ関数にはSHA-3の候補が含まれていませんが(SHABALを除く)、私はそれに取り組んでいるところです。