MD5はまだファイルの整合性を確認するための実行可能なソリューションですか?

MD5はまだファイルの整合性を確認するための実行可能なソリューションですか?

MD5クラッシュについて読んで、MD5がもはや信頼できないという内容を読んだ。しかし、ファイルの整合性を確認するときにこれが適用されるかどうか疑問に思います。 FLAC / metaflac(無料ロスレスオーディオコーデック)などのツールは、まだMD5を使用して音楽ファイルのデータの整合性を検証することがわかりました。

答え1

はい、CRC32も可能です。これは、MD5 / SHA1との競合について聞いたときに、膨大なコンピューティングパフォーマンスを使用して競合のあるファイルを生成するためにデータを特別に作成することに関するものです。

これは、ストレージ/RAM/IOで発生する可能性があるシングルビットエラーには適用されません。

しかし、1つの注意点は、最新のCPUではSHA1 / SHA256が可能であることです。はるかに早くMD5と比較すると、前者はハードウェアアクセラレーションで、MD5はコンピューティングだからです。

ただ走ってtime sha256sum/md5sum large_enough_fileみてください。

キャッシュされた4.5GBファイルの場合:

$ time md5sum *iso
b5a7be560dbd73619945129e52be1b5f  win10.iso

real    0m5.037s
user    0m4.805s
sys 0m0.229s

$ time sha256sum *iso
c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d  win10.iso

real    0m2.283s
user    0m2.031s
sys 0m0.250s

以下は、すべてのオーディオファイルのハッシュ合計を含むファイルを生成する以前に作成した素晴らしいスクリプトです。

#! /bin/bash

cd /audio || exit 1

echo -n "Running ... "
find . \(   -iname "*.mp3" -o \
        -iname "*.m4a" -o \
        -iname "*.ogg" -o \
        -iname "*.flac" \
    \) -print0 | sed 's/\.\///' | sed 's/\x0\.\//\x0/g' | sort -z | xargs -0 -n1 ionice -c 3 md5sum | tee /tmp/ALL-`date +%F`.md5 | \
        awk '
            BEGIN{ORS=""}
            {
                out=substr($0, 35);
                print out;
                fflush();
                for (i=0;i<length(out);i++) print "\b \b";
            }
            END{print FNR" all done\n";}
        '
echo " finished"

ディレクトリの場合、/audio指定されたすべてのファイル形式のmd5ハッシュを計算します/tmp

関連情報