假设您有此消息(ab,cd,ef)
并且您有 ROHC (Robust header compression) CRC8 polynomial e0
。
C(x) = x^0 + x^1 + x^2 + x^8
有什么方法可以从最后一个字节开始向后计算消息的 CRC,并获得与在原始消息上计算相同的结果?
不,这对于您的多项式 (100000111) 通常是不可能的。
EG: 110100111/100000111 = 011010011
but: 111001011/xxxxxxxxx != 011010011 (in general)
但是,如果您事先知道 CRC,您仍然可以检查消息的有效性。
EG: 110100111/100000111 = 01101001
=> message transmitted = 11010011 01101001
=> message received (reversed) = 10010110 11001011
then: 10010110 11001011/111000001 == 0
(where: 111000001 = reversed(100000111))
=> crc(reversed(11001011)) = crc(11010011) == reversed(10010110) = 01101001
请注意,仅当消息按 BITEWISE 反转时才适用。
IE: reversed(ABC) = reversed(101010111100) = 001111010101
= 3D5 = reversed(ABC) != CBA = 110010111010 != reversed(101010111100)
所以在实现你的算法时要小心;-)