2015-10-29 6 views
0

Извините, если я смогу ответить на этот простой вопрос сам!32-битный CRC с некоторыми входами, установленными на ноль. Является ли это менее точным, чем фиктивные данные?

Я работаю над встроенной системой с 32-битным CRC, выполненным в аппаратном обеспечении для скорости. Утилита существует, что я не могу изменить, изначально беру 3 ввода (слова) и возвращает CRC.

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

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

ответ

1

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

0

Я согласен с Марком Адлером в том, что нули математически не хуже других чисел. Однако, если утилита, которую вы не можете изменить, делает что-то плохое, как установить начальный CRC на ноль, затем выберите ненулевые слова. Исходный CRC = 0 + Data = 0 + Pads = 0 дает окончательный CRC = 0. Это технически справедливо, но обычное получение CRC = 0 нежелательно для проверки целостности данных. Вы могли бы компенсировать такую ​​проблему с ненулевыми символами прокладки, например. pad = -1.

+0

Это верно только в том случае, если вы поместите слово данных в _third_ из трех входных слов. Если вы поместите слово данных в первое слово и два нулевых слова во втором и третьем словах, это не произойдет. –

+0

@Mark - Что «этого не произойдет», вы имеете в виду? С начальным хешем нуля, тогда CRC (0,0,0) = 0. CRC (0, -1, -1) и CRC (-1, -1,0) оба приводят к ненулевым CRC. Как имеет значение порядок? – srking

+0

CRC (_data_, 0,0) приводит к двум нулевым словам, продолжающим скремблировать биты. CRC (0,0, _data_) может (если CRC не имеет предварительной подготовки) приводит к тому, что в регистре CRC останутся все нули до точки, в которую подается _data_. –

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

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