2012-04-27 5 views
3

У вас есть это сообщение (ab,cd,ef), и у вас есть ROHC (Robust header compression) CRC8 полином e0.Обратное сообщение Расчет CRC

C(x) = x^0 + x^1 + x^2 + x^8 

Есть ли способ, что я могу вычислить CRC на сообщения в обратном направлении, начиная с последнего байта и получить те же результаты, как если бы я его расчета на исходное сообщение?

+1

Чтобы проверить свое понимание, если сообщение добавляется его CRC8 обозначается , и CRC8 этого сообщения CRC8 () = 0 означает, что сообщение действительно, вы хотите, чтобы функция RCRC8 применялась к обратному сообщению RCRC8 () = 0, если сообщение действительно? Это правильно? Являются ли биты в сообщении также отмененными или вы рассматриваете только обратные байты? – guga

ответ

-1

Это не возможно для вашего полинома (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) 

Так что будьте осторожны при реализации вашего алгоритма ;-)

 Смежные вопросы

  • Нет связанных вопросов^_^