Как я мог предположить алгоритм контрольной суммы?

16
задан Suma 2 October 2008 в 21:18
поделиться

3 ответа

Существует много переменных для рассмотрения для CRC:

Polynomial
No of bits (16 or 32)
Normal (LSB first) or Reverse (MSB first)
Initial value
How the final value is manipulated (e.g. subtracted from 0xffff), or is a constant value

Типичный CRCs:

LRC:    Polynomial=0x81; 8 bits; Normal; Initial=0; Final=as calculated
CRC16:  Polynomial=0xa001; 16 bits; Normal; Initial=0; Final=as calculated
CCITT:  Polynomial=0x1021; 16 bits; reverse; Initial=0xffff; Final=0x1d0f
Xmodem: Polynomial=0x1021; 16 bits; reverse; Initial=0; Final=0x1d0f
CRC32:  Polynomial=0xebd88320; 32 bits; Normal; Initial=0xffffffff; Final=inverted value
ZIP32:  Polynomial=0x04c11db7; 32 bits; Normal; Initial=0xffffffff; Final=as calculated

первое, что нужно сделать состоит в том, чтобы добраться, некоторые образцы изменением говорят последний байт. Это поможет Вам выяснять число байтов в CRC.

это "самодельный" алгоритм. В этом случае это может занять время. Иначе попробуйте стандартные алгоритмы.

Попытка, изменяющая или msb или lsb последнего байта, и, видит, как это изменяет CRC. Это даст признак направления.

Для создания этого более трудным существуют реализации, которые управляют CRC так, чтобы это не влияло на средство связи (протокол).

Из Вашего комментария о RFID, это подразумевает, что CRC является связанной связью. Обычно CRC16 используется для связи, хотя CCITT также используется в некоторых системах.

, С другой стороны, если это - УВЧ метки RFID, то существует несколько схем CRC - на 5 битов и приблизительно на 16 битов. Они документируются в стандарты ISO и таблицы данных IPX.

IPX:  Polynomial=0x8005; 16 bits; Reverse; Initial=0xffff; Final=as calculated
ISO 18000-6B: Polynomial=0x1021; 16 bits; Reverse; Initial=0xffff; Final=as calculated
ISO 18000-6C: Polynomial=0x1021; 16 bits; Reverse; Initial=0xffff; Final=as calculated
    Data must be padded with zeroes to make a multiple of 8 bits
ISO CRC5: Polynomial=custom; 5 bits; Reverse; Initial=0x9; Final=shifted left by 3 bits
    Data must be padded with zeroes to make a multiple of 8 bits
EPC class 1: Polynomial=custom 0x1021; 16 bits; Reverse; Initial=0xffff; Final=post processing of 16 zero bits

Вот Ваш ответ!!!!

работавший через Ваши журналы, CRC является CCITT один. Первый байт 0xd6 исключен из CRC.

19
ответ дан 30 November 2019 в 22:02
поделиться

Это не мог бы быть CRC, это мог бы быть код с коррекцией ошибок как Тростник-Solomon.

коды ECC часто являются существенной частью размера исходных данных, которые они защищают, в зависимости от коэффициента ошибок, который они хотят обработать. Если бы размер сообщений является больше, чем приблизительно 16 байтов, 2 байтов ECC не было бы достаточно, чтобы быть полезными. Таким образом, если сообщение является большим, Вы, скорее всего, корректны что его своего рода CRC.

2
ответ дан 30 November 2019 в 22:02
поделиться

Необходимо было бы попробовать каждый возможный алгоритм контрольной суммы и видеть, какой генерирует тот же результат. Однако нет никакой гарантии к тому, какое содержание было включено в контрольную сумму. Например, некоторые алгоритмы пропускают пробелы, которые приводят к различным результатам.

я действительно не вижу, почему кто-то хотел бы знать это все же.

0
ответ дан 30 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: