CRC16-CCITT用于使用python的二进制文件

时间:2016-07-24 09:20:41

标签: python crc

CRC16-CCITT计算的文件的最大大小是多少?

如果我在256 * 1024的块上拆分二进制文件,我可以添加每个块的crc结果来确定整个文件的CRC吗?

选择CRC-16CCITT和CRC-32CCITT的标准是什么?

1 个答案:

答案 0 :(得分:2)

CRC对文件大小没有限制。但是,您的库应该支持以块的形式提供数据来计算crc。简单地添加块的CRC值不会起作用 - 您必须使用前一个块的CRC作为下一个块CRC计算的起始值,并且需要您的库支持。

E.g。 pycrc16给出了这样做的例子:

import crc16
crc = crc16.crc16xmodem(b'1234')
crc = crc16.crc16xmodem(b'56789', crc)

在16对32位部分。通常,存在的位越多,冲突的概率就越低,因此检测错误的机会就越大。但这也很大程度上取决于多项式以及CRC的其他参数。因此,选择正确/最好的CRC是冬青战争的好借口:o)。

我担心" CRC-32CCITT"虽然。 CRC名称有些随意,通常相同的名称指的是不同的算法,许多算法都有多个名称。但据我所知," CCITT"总是指CRC-16算法。因此,作为一个提醒 - 从16位到32位的简单扩展并不是一个好主意,因为好的16位多项式通常不如32位多项式那么好。如果您更喜欢使用32位CRC,我建议选择合适的32位CRC。请参阅here一个好的清单"已知的好"参数集。