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
。