如何结合CRC-32结果?

时间:2017-05-18 04:11:35

标签: ethernet crc32

假设我有两个数字X = 0xABC; Y = 0xDE。 我想在Z上计算CRC-32,它是X连接到Y,即Z = 0xABCDE。

我有CRC(X)和CRC(Y)可用。如何计算CRC(Z)?

1 个答案:

答案 0 :(得分:0)

请查看crc32_combine()zlib的方法。

基本思想是使用CRC的线性。 0xABC000x000DE排他或对的CRC是其对应的CRC的异或。如果我忽略了前处理和后处理(我可以将其留给读者导出的原因),前导零不会改变CRC,因此0xDE的CRC与{的CRC相同{1}}。所以我需要做的就是计算从0x000DE的CRC开始时附加零的效果,以获得0xABC的CRC。那么排他性或那两个CRC。

0xABC00使用矩阵乘法计算在O(log( n ))时间而不是O( n)附加 n 零的效果)时间,因此无论原始消息的长度如何,组合CRC都非常快。