MD5는 여전히 파일 무결성을 확인하기 위한 실행 가능한 솔루션입니까?

MD5는 여전히 파일 무결성을 확인하기 위한 실행 가능한 솔루션입니까?

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.

관련 정보