crc32 함수는 어떤 파일이나 id 에 대한 hash 값을 만들어 준다.
해당 데이터의 오류 확인이나 중복검사에 사용할 수 있다.

사용되는 곳

특정 파일이 원본과 다르거나 깨지지 않았는지 확인할 때 사용할 수 있다.

예를 들어 어떤 파일을 다운받았을 때, 파일의 제공자가
해당 파일의 crc32 값이 ‘1472410221’라고 알려주었다.
다운로드 한 파일의 crc32 값을 계산해 동일한 값이라면
파일이 문제없이 다운로드 되었다고 확인할 수 있다.

zip 나 rar 같은 압축 포멧은 파일의 crc32 값을 함께 저장한다.
그러면 압축파일이 깨졌거나 변경되었을 경우
원본의 crc32값과 달라져 확인이 가능하다.

crc32 값은 8자리 16진수로 표현되기 때문에
확률적으로 2^32(약 42.9억)분의 1로 해쉬값이 같을 수 있다.

사용 예시

테스트를 위해 ‘Test.txt’ 파일을 만들고
내부에는 original 이라고 작성했다.

f = open('Test.txt')
print(f.read())

# print
original

해쉬값을 확인해보자

from zlib import crc32

f = open('Test.txt',mode='rb')
crc = crc32(f.read())
print(crc)

# print
796029061

파일 내용을 fake로 수정한뒤

f = open('Test.txt',mode='w')
f.write('fake')
f.close()

해쉬값을 확인하면 달라진 것을 확인 할 수있다.

f = open('Test.txt',mode='rb')
crc = crc32(f.read())
print(crc)

# print
3452825967

Leave a comment