파이썬 Crc32
이 튜토리얼에서는 Python에서 binascii
또는 zlib
라이브러리를 사용하여 데이터의 crc32를 계산하는 방법에 대해 설명합니다.
파이썬 CRC32
CRC32는 데이터의 디지털 전송에 있는 오류를 확인하는 데 사용되는 순환 중복 검사라고도 하는 데이터의 체크섬입니다. 디지털 전송에서 노이즈나 간섭으로 인해 입력의 데이터에 비해 출력의 데이터가 변경될 수 있으며 전송의 출력 데이터가 변경되었는지 확인하기 위해 CRC32를 사용하여 차이점을 찾을 수 있습니다. 입력 및 출력에서 데이터의 체크섬.
데이터의 입력 및 출력 체크섬의 차이가 0이면 전송에 오류가 없으며 출력의 데이터는 전송의 입력 데이터와 동일합니다. 데이터의 체크섬은 존재하는 비트 수를 나타내며 전송되기 전에 파일에 첨부됩니다.
우리는 이미 입력 데이터의 체크섬을 알고 있고 출력 데이터의 체크섬만 찾으면 되며 그 차이는 데이터에 존재하는 오류에 대해 알려줍니다. binascii
또는 zlib()
라이브러리의 crc32()
기능을 사용하여 데이터의 CRC32 또는 체크섬을 찾을 수 있습니다.
crc32()
함수 내부에 데이터를 바이트 단위로 전달해야 하며 함수는 해당 데이터의 32비트 부호 없는 정수를 반환합니다. 입력 데이터가 바이트 데이터 유형이 아닌 경우 crc32()
함수 내부로 전달하기 전에 바이트로 변환해야 합니다.
crc32()
함수 내부에 전달된 입력 값이 0이면 출력도 0이 됩니다. 예를 들어 binascii
및 zlib
라이브러리를 사용하여 문자열의 CRC32 체크섬을 찾습니다.
아래 코드를 참조하십시오.
import binascii
import zlib
crc1 = binascii.crc32(b"abcd")
crc2 = zlib.crc32(b"abcd")
print(crc1)
print(crc2)
출력:
3984772369
3984772369
위의 코드에서 crc32()
함수 내부에 문자 b
를 사용하여 문자열을 바이트로 변환했습니다. 체크섬을 찾는 데 사용되는 알고리즘은 암호화 알고리즘이 아니며 정확하지 않으므로 해싱 목적으로 사용할 수 없습니다.
위의 코드는 Python 3에서 테스트되었으며 32비트 부호 없는 정수를 반환하지만 Python 2에서 동일한 코드를 실행하면 결과는 32비트 부호 있는 정수가 되며 두 결과는 동일하지 않습니다. Python 2의 결과를 무부호로 변환하려면 &
문자를 사용하여 0xffffffff
로 출력의 비트 AND
를 가져와야 합니다.
binascii
라이브러리는 바이너리에서 16진수로 데이터를 변환하는 것과 같이 데이터를 바이너리에서 ASCII로 변환할 수 있습니다. b2a_hex()
함수를 사용하여 위의 바이트 값을 16진수로 변환할 수 있습니다.
zlib
라이브러리는 데이터를 압축 및 압축 해제할 수 있습니다.