答案 0 :(得分:0)
如果您可以将文件保存到PC上,那将会有所帮助。您可以对两个文件中的任何两个进行异或运算,以得到一个全零的文件,但CRC的4个不同字节和4个字节除外。两个文件的异或也将消除任何初始值或最终异或值,就像初始值= 0和最终异或值= 0一样。然后检查几乎全为零的文件,以查看CRC是否符合您的期望。如果匹配,那么您将知道CRC包括4个非零字节以及其后的所有零字节,但是您不知道CRC在其计算中包括的4个非零字节之前还有多远,但是这至少是一个开始。如果匹配,则将减少搜索CRC计算中包含的内容的次数。
假设用于CRC的部分是连续的,则可以使用快速CRC32进行蛮力搜索。在具有SSE2(xmm)寄存器的X86上,基于程序集的CRC32可以在第三代Intel 3770K 3.5GHz处理器(现在速度更快)上大约0.0002秒内计算700,000字节的CRC32。尝试从8到700,000字节的长度。
我使用CRC32和CRC32C多项式将代码从此github示例转换为Visual Studio asm,以实现反射和非反射CRC,并且可以上传代码。
https://github.com/intel/isa-l/blob/master/crc/crc16_t10dif_01.asm