реклама на сайте
подробности

 
 
> Как дополнить данные до нулевой CRC?
ViKo
сообщение May 16 2018, 13:57
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Вот здесь тренируюсь:
http://crccalc.com/

Почитал здесь для просветления в тонких местах:
https://ru.wikipedia.org/wiki/%D0%A6%D0%B8%...%BA%D0%BE%D0%B4

Ввожу число: 00000000 Hex, вычисляю CRC-32. Для CRC-32/MPEG-2 вижу результат 0xC704DD7B.
Добавляю его к данным: 00000000 C704DD7B
Вычисляю, получаю CRC-32/MPEG-2 0x00000000.
Здесь все понятно, поскольку биты входных данных и результата не реверсируются и выход не инвертируется. С инверсией выхода тоже понятно.

А как дополнить данные, если делается реверс битов? Что добавить к данным 00000000, чтобы результат стал 0x00000000? Что-то не получается.

Разобрался. Для RefIn true, RefOut true, XorOut 0xFFFFFFFF нужно CRC инвертировать и изменить порядок байтов (не битов!).

Для 00000001 CRC-32 = 0x5643EF8A, инверсия: 0xA9BC1075, перестановка байтов: 0x7510BCA9
Для 00000001 7510BCA9 CRC-32 = 0xFFFFFFFF

Почему так? Нет ли ошибки в расчетах на сайте?

Данные можно задавать в поле в таком виде:
00 00 00 01
По байтам. Ничего не меняется.
Ага, значит, CRC работает с байтами. Поэтому результат CRC нужно просто разбить на байты. Но почему тогда CRC без реверса битов не требует перестановки байтов?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Serge V Iz
сообщение May 16 2018, 17:09
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 3-05-18
Пользователь №: 103 639



CRCn- это остаток от деления на неприводимый многочлен степени n над GF(2). Чтобы получить нулевую CRC, можно взять значение CRC исходного сообщения, дописать к нему n нулей, вычислить CRC от получившегося короткого сообщения длины 2n и эту новую CRC вычесть ("исключающее или" sm.gif ) из этого самого короткого сообщения в 2n разрядов. Вот в случае MPEG это самое и проделано )

Если в конце CRC инвертируется, то ее нужно обратно инвертировпть (вот это вот самое
Цитата
XorOut 0xFFFFFFFF
)
А порядок байтов, это, вероятно, из-за little endian - как оно будет выглядеть в памяти, если его записать 32-р числом вслед за строкой байтов? )

Сообщение отредактировал Serge V Iz - May 16 2018, 17:21
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 16 2018, 17:42
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Serge V Iz @ May 16 2018, 20:09) *
А порядок байтов, это, вероятно, из-за little endian - как оно будет выглядеть в памяти, если его записать 32-р числом вслед за строкой байтов? )

Да, правильно. Не так я задавал числа в первом сообщении.

Вот последовательность для CRC-32/JAMCRC:

00000000 01000000 02000000 03000000 CRC-32/JAMCRC = 0xD8715056
00000000 01000000 02000000 03000000 565071D8 CRC-32/JAMCRC = 0x00000000

Т.е., добавляю то же число, посчитанную CRC, просто в окне нужно задавать данные, расположенные по байтам в памяти (little-endian).

В STM32 в функции вычисления CRC реверсирую биты входных данных, аналогично задаю массив:
uint32_t Num[] = { [0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 0xD8715056 };
И вычисляется в результате 0x00000000.
Xor выходную не использую.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Как дополнить данные до нулевой CRC?   May 16 2018, 13:57
- - k155la3   >> Ага, значит, CRC работает с байтами. Воо...   May 16 2018, 14:28
- - ViKo   Я соображаю, как рассчитывается CRC, однако реализ...   May 16 2018, 15:16
- - toweroff   А для чего это? для сверки какая разница - ноль ил...   May 16 2018, 18:18
|- - ViKo   Цитата(toweroff @ May 16 2018, 21:18) А д...   May 16 2018, 19:30
|- - toweroff   Цитата(ViKo @ May 16 2018, 22:30) Не поня...   May 17 2018, 02:43
||- - mcheb   Цитата(toweroff @ May 17 2018, 06:43) Теп...   May 17 2018, 08:15
||- - toweroff   Цитата(mcheb @ May 17 2018, 11:15) А попо...   May 17 2018, 14:58
|- - jcxz   Цитата(ViKo @ May 16 2018, 22:30) Задача ...   May 17 2018, 06:17
|- - ViKo   Цитата(jcxz @ May 17 2018, 09:17) А какой...   May 17 2018, 07:11
||- - jcxz   Цитата(ViKo @ May 17 2018, 10:11) Структу...   May 17 2018, 10:13
||- - ViKo   Цитата(jcxz @ May 17 2018, 13:09) Я не сп...   May 17 2018, 10:14
|||- - jcxz   Цитата(ViKo @ May 17 2018, 13:14) А чем в...   May 17 2018, 10:18
|||- - ViKo   Цитата(jcxz @ May 17 2018, 13:18) Может и...   May 17 2018, 10:23
||- - k155la3   Цитата(jcxz @ May 17 2018, 13:13) Ничего ...   May 18 2018, 08:45
|- - k155la3   Цитата(jcxz @ May 17 2018, 09:17) А какой...   May 17 2018, 07:17
- - ViKo   Ну, средство то же. Цель только другая.   May 17 2018, 03:27
- - Serge V Iz   Да и в программной меньше букв писать. Только есл...   May 21 2018, 06:52


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016