def get_crc32_polynomial():
return 0x04C11DB7
def initialize_crc_register():
return 0xFFFFFFFF
def calculate_crc32(data):
crc_register = initialize_crc_register()
crc_polynomial = get_crc32_polynomial()
for byte in data:
crc_register ^= (byte << 24)
for _ in range(8):
if crc_register & 0x80000000:
crc_register = (crc_register << 1) ^ crc_polynomial
else:
crc_register = crc_register << 1
crc_register ^= 0xFFFFFFFF
return crc_register
def hex_to_bytes(hex_string):
return bytes.fromhex(hex_string)
hex_input = "48656C6C6F2C205843523221" # "Hello, CRC32!" 的十六进制表示
data = hex_to_bytes(hex_input)
crc32 = calculate_crc32(data)
print(f"CRC32: {crc32:08X}")