Math 复合CRC多项式

Math 复合CRC多项式,math,crc,polynomial-math,polynomials,finite-field,Math,Crc,Polynomial Math,Polynomials,Finite Field,我试图合成2个CRC多项式。我有一条消息,我用一个多项式生成一个CRC。然后,我对第一个CRC的结果进行CRC,以获得第二个结果。有没有可能一次就做到这一点 例如: 给定消息0xC和多项式0x17,我计算CRC,即0xA。然后取这个结果和另一个多项式0x13,再次计算CRC,结果为0xD。我试图推导一个新的多项式,给定消息0xC将产生结果0xD 我只尝试在纸上完成这项工作,因此我没有任何代码,但有些代码应该如下所示: def CRC(消息,多边形): #CRC实施 a=CRC(0xC,0x17)

我试图合成2个CRC多项式。我有一条消息,我用一个多项式生成一个CRC。然后,我对第一个CRC的结果进行CRC,以获得第二个结果。有没有可能一次就做到这一点

例如: 给定消息0xC和多项式0x17,我计算CRC,即0xA。然后取这个结果和另一个多项式0x13,再次计算CRC,结果为0xD。我试图推导一个新的多项式,给定消息0xC将产生结果0xD

我只尝试在纸上完成这项工作,因此我没有任何代码,但有些代码应该如下所示:

def CRC(消息,多边形):
#CRC实施
a=CRC(0xC,0x17)
#此时a的值应为0xA
b=CRC(a,0x13)
#b的值现在是0xD
我尝试使用我的初始消息和一个函数调用来获得相同的结果

b=CRC(0xC,?)
#我希望此调用后的b值为0xD
这似乎是一个愚蠢的要求,但我觉得它很有帮助。
我曾尝试应用简单数学,特别是商余数定理,但我发现有限域中的乘法过于复杂。

我误解了原始答案中的问题。我假设这是一个单半字节消息,因为第二个CRC只有一个单半字节输入,即0x17的CRC。这可以使用一个包含16个条目的表来实现。使用n表示半字节,使用无卡利和无借二进制数学以及十六进制数:

crc = (((n*10)%17)*10)%13 = (((n*7)%17)*3)%13
我想知道的是,这里的目标是否是处理多个字节的消息。例如,假设消息是{x y z},那么编码的消息将是

{x y z crc17{x y z} crc13{x y z}}


欢迎来到SO!请为您的问题提供一些代码:您尝试了什么,等等请参见@cccnrc我已尝试修复我的帖子。希望现在更清楚:)@costin-我更新了我的答案。我还不清楚目标是什么。如果目标是只计算单个半字节上的crc,那么可以使用16个条目的查找表。
{x y z crc17{x y z} crc13{x y z crc17{x y z}}