データが正しく送信されたことを確認するために、従来使用していた仮想マシンのWindowsインストーライメージをバックアップしておきました。cksum
好奇心にcksum
同じファイルの実行時間と実行時間を比較してみることにしました。md5sum
I / Oキャッシュに関連していないことを確認するために、各ジョブを数回実行した後の結果は、常にmd5sum
約半分の時間がかかりましたcksum
。 2つの質問があります。
md5sum
なぜそんなに速くなったのですかcksum
?cksum
私が選択する理由がありますかmd5sum
?
私はアーチLinuxを使用しています。
メモ:どちらが良いかという問題ではありません。これは以前に何度も議論されており、md5sum
これが次の用途に使用されるべきではないことを知っています。暗号化ハッシュ時。具体的には、どのようにmd5sum
探す手段として活用するのか尋ねます。ランダムエラー。
答え1
両方のハッシュアルゴリズムは異なる計算を実行するので、異なるパフォーマンス特性を持つことは驚くべきことではありません。 Linuxシステムでは通常md5sum
GNUcksum
バージョンcoreutils
です。md5sum
最適化されており、一度に32ビットブロックの内容に対して機能するCライブラリのMD5機能を使用してください(参照:md5.c
そしてmd5-block.c
)。cksum
一度に1バイトずつコンテンツを処理する独自のCRC実装を使用します(参照:cksum.c
)。md5sum
これは他の製品に比べて速度が重要な要因かもしれませんcksum
。
ランダムエラーを見つけるためにどのツールがより適切かを判断するには、関連するアルゴリズムの数学的属性を分析する必要があります。非常に基本的なレベルでは、cksum
32ビットハッシュが生成されるのに対し、md5sum
128ビットハッシュが生成されるため、後者は偶発的な衝突に対してより強くなければなりません。したがって、特に反転ビット数が多い場合は、ランダムエラーをよりよく検出できます。より高いです)。
選択する唯一の理由cksum
は、md5sum
前者がPOSIXによって指定されているため、すべてのPOSIXシステムがこれを持つことになるからだと思います。これが要素であれば、cksum
より適切です。
(暗号化ハッシュに対するあなたのコメントはcksum
まったく暗号化ハッシュではないため、疑問の余地があります。)