MD5 충돌에 대해 읽었으며 MD5가 더 이상 신뢰할 수 없다는 내용을 읽었습니다. 그러나 파일의 무결성을 확인할 때 이것이 적용되는지 궁금합니다. FLAC/metaflac(무료 무손실 오디오 코덱)과 같은 도구는 여전히 MD5를 사용하여 음악 파일의 데이터 무결성을 확인하는 것으로 나타났습니다.
답변1
예, CRC32도 가능합니다. 왜냐하면 MD5/SHA1과의 충돌에 대해 들었을 때 엄청난 컴퓨팅 성능을 사용하여 충돌이 있는 파일을 생성하기 위해 데이터를 특별히 제작하는 것에 관한 것이기 때문입니다.
이는 스토리지/RAM/IO에서 발생할 수 있는 단일 비트 오류에는 적용되지 않습니다.
하지만 한 가지 주의할 점은 최신 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
.