CRC16 расчет и проверка - PullRequest
       32

CRC16 расчет и проверка

0 голосов
/ 13 октября 2019

Я пытался заставить работать проверку CRC16, но мне кажется, что я не понимаю, как это сделать. Я следовал некоторым учебникам и проверял некоторые вопросы здесь, но я не могу заставить его работать.

Я использую предопределенный CRC-16 / CCITT

crc16 = crcmod.predefined.Crc('xmodem')

# INIT
bytestr = bytearray("Hello World, I am here!\n".encode('utf-8'))
count = len(bytestr)
progress = 0
fragment = 7
fragments = []

# FRAGMENTING
while count > 0:
    fragments.append(bytestr[progress:progress+fragment])
    progress += fragment
    count -= fragment

# CRC CALCULATION
crc16.update(fragments[0])
fragments[0] += crc16.digest()
crc16.update(fragments[0])
print(crc16.hexdigest())
crc16.new()

Я не держуполучить 0000, чтобы подтвердить, что это правильно. Я попытался использовать hexlify как какой-то другой заданный вопрос, затем использовать crc16 для него, затем добавить дайджест crc к его концу (я убедился, что сохранил новый фрагмент как версию hexlify + дайджест). Но даже тогда, когда я проверял, все равно не было 0000.

crc16.update(hexlify(fragments[0]))
fragments[0] = hexlify(fragments[0]) + crc16.digest()
crc16.update(fragments[0])
print(crc16.hexdigest())
crc16.new()

Как правильно это сделать?

Примечание: я попытался сторнировать вывод дайджеста crc16 перед его добавлениемк фрагменту

...