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

 
 
> Полином для вычисления обратной CRC, Из CRC получить исходный код
ViKo
сообщение Mar 16 2015, 09:08
Сообщение #1


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

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



Имею идею шифровать код прошивки с помощью CRC. Конкретно, декодировать его с помощью встроенной в STM32F2xx CRC-32 с полиномом:
X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2+ X +1
То есть, каждое исходное слово заменяется CRC, вычисленной с его участием, следующее слово заменяется следующей CRC.
Вопрос, как закодировать, чтобы после декодирования получить исходный код? Каким полиномом? Думаю, перекрутить 32 в 1, и т. п.
Пока читаю пару статей о CRC, может, кто-то уже знает точный ответ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Mar 16 2015, 13:12
Сообщение #2


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

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



Пытаюсь понять на простом примере. Вот в этом калькуляторе
http://www.zorc.breitbandkatze.de/crc.html
задаю полином 8 порядка 100000111 (hex 7), все реверсы убираю, для данных 0 получаю результат 0x90. Никак, деля вручную, не могу получить. Получается 0xFD.

upd. Ага, вышло, когда посчитал на бумаге не для 0, а для 0x30 ('0'). Значит, в строке Data sequence задаются символы. Ух...
Вот эта программа помогла понять. Там свои тараканы.
http://depa.usst.edu.cn/chenjq/www2/softwa...calculation.htm

Цитата(yes @ Mar 16 2015, 15:32) *
может я что-то непонимаю - но не уверен, обратима ли эта операция?

Обратима, так как основана на xor.

Похоже, если задать данные 0x01, то CRC выдаст результат, равный ее полиному (без старшего разряда. Так, как она описывается в форме 0xXXXX). CRC-08(0x01) = 0x07.
А если задать данные, равные полиному (вместе со старшим битом), то CRC равна 0. Для верхнего примера CRC-08(0x0107) = 0.
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 16 2015, 14:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(ViKo @ Mar 16 2015, 16:12) *
Обратима, так как основана на xor.

То, что она основана на XOR, не говорит о том, что одному выходному значению строго соответствует одно входное при любых начальных условиях. И, кстати, это, действительно, не факт. Я даже подозреваю обратное, по причине того, что при делении на полином, имеющий максимальную степень, равную размеру слова, но имеющий еще компоненты меньших степеней, остаток может содержать этот самый старший бит, который реально отбрасывается, а может и не содержать. При этом оставшиеся биты могут быть одинаковыми.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 16 2015, 14:21
Сообщение #4


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

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



Цитата(SM @ Mar 16 2015, 17:19) *
То, что она основана на XOR, не говорит о том, что одному выходному значению строго соответствует одно входное при любых начальных условиях. И, кстати, это, действительно, не факт.

Это зависит от длины данных. Думаю, если данные короче или равны размеру полинома, то будет однозначное соответствие. Я так и хочу использовать.
Пример из обычной математики - если имеем байт, то остаток от деления байта на 256 будет однозначно определять исходные данные.
Go to the top of the page
 
+Quote Post
SM
сообщение Mar 16 2015, 14:24
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(ViKo @ Mar 16 2015, 17:21) *
Это зависит от длины данных. Думаю, если данные короче или равны размеру полинома, то будет однозначное соответствие. Я так и хочу использовать.

Тогда перед каждым новым словом придется переинициализировать регистр CRC.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 16 2015, 14:31
Сообщение #6


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

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



Цитата(SM @ Mar 16 2015, 17:24) *
Тогда перед каждым новым словом придется переинициализировать регистр CRC.

Идея такая. На каждое слово, посланное в блок CRC-32, STM32 выдает 32-битовую CRC. Она и должна быть расшифрованным кодом прошивки. Получив следующее слово, с использованием предыдущей CRC, нужно получить следующее слово прошивки. И так до конца. Без инициализации, только в самом начале однажды (это слово инициализации и будет главным секретом).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Полином для вычисления обратной CRC   Mar 16 2015, 09:08
- - SM   Математически точный ответ я дать могу - для того,...   Mar 16 2015, 11:05
|- - demiurg_spb   Извините, не понял сути сначала. По сути ИМХО это ...   Mar 16 2015, 11:22
- - yes   может я что-то непонимаю - но не уверен, обратима...   Mar 16 2015, 12:32
|- - SM   Цитата(ViKo @ Mar 16 2015, 17:31) Без ини...   Mar 16 2015, 14:39
- - ViKo   А мне интуиция говорит, что, поскольку я имею те ж...   Mar 16 2015, 14:47
|- - SM   Цитата(ViKo @ Mar 16 2015, 17:47) А мне и...   Mar 16 2015, 15:25
|- - ViKo   Цитата(SM @ Mar 16 2015, 18:14) Каждое по...   Mar 16 2015, 15:28
|- - SM   Цитата(ViKo @ Mar 16 2015, 18:28) Надо от...   Mar 16 2015, 15:37
|- - ViKo   Цитата(SM @ Mar 16 2015, 18:37) CRC то не...   Mar 16 2015, 15:50
|- - SM   Цитата(ViKo @ Mar 16 2015, 18:50) Избавля...   Mar 16 2015, 15:54
- - ViKo   Наверное, и с алгебраическим умножением и ограниче...   Mar 16 2015, 16:11
|- - SM   Цитата(ViKo @ Mar 16 2015, 19:11) Наверно...   Mar 16 2015, 16:29
|- - AHTOXA   Так ему однозначность нужна в другую сторону. Чтоб...   Mar 16 2015, 16:51
|- - SM   Цитата(AHTOXA @ Mar 16 2015, 19:51) Так е...   Mar 16 2015, 17:00
|- - AHTOXA   Цитата(SM @ Mar 16 2015, 22:00) Так а как...   Mar 16 2015, 18:58
|- - ViKo   Цитата(AHTOXA @ Mar 16 2015, 21:58) Наско...   Mar 16 2015, 19:08
|- - SM   Цитата(ViKo @ Mar 16 2015, 22:08) Это уже...   Mar 16 2015, 19:23
- - ViKo   В CRC-4 полином 5-битовый, а числа и остаток 4-бит...   Mar 16 2015, 17:19
|- - SM   Цитата(ViKo @ Mar 16 2015, 20:19) В CRC-4...   Mar 16 2015, 17:21
|- - ViKo   Цитата(SM @ Mar 16 2015, 20:21) Вот поэто...   Mar 16 2015, 18:07
|- - SM   Цитата(ViKo @ Mar 16 2015, 21:02) Не согл...   Mar 16 2015, 18:11
|- - ViKo   Цитата(SM @ Mar 16 2015, 21:11) Нельзя бы...   Mar 16 2015, 18:16
|- - SM   Цитата(ViKo @ Mar 16 2015, 21:16) и, зная...   Mar 16 2015, 18:26
- - krux   я таки-извиняюсь, но предположу, что топикстартеру...   Mar 16 2015, 17:32
|- - SM   Цитата(krux @ Mar 16 2015, 20:32) я таки-...   Mar 16 2015, 17:36
- - krux   я опять-таки извиняюсь, но топикстартер в курсе пр...   Mar 16 2015, 17:51
- - ViKo   Давайте возьмем примитивнейший пример. CRC-8 равна...   Mar 16 2015, 18:48
|- - SM   Цитата(ViKo @ Mar 16 2015, 21:46) Очевидн...   Mar 16 2015, 19:04
- - ViKo   Полином CRC известен, он не от балды берется. x^4 ...   Mar 16 2015, 19:33
|- - SM   Цитата(ViKo @ Mar 16 2015, 22:33) Полином...   Mar 16 2015, 20:25
- - ViKo   Могу только повторить - 0x30...0x3F не укладываютс...   Mar 16 2015, 20:58
|- - SM   Цитата(ViKo @ Mar 16 2015, 23:58) Могу то...   Mar 16 2015, 21:43
|- - ViKo   Цитата(SM @ Mar 17 2015, 00:43) Любая мет...   Mar 16 2015, 21:52
|- - SM   Цитата(ViKo @ Mar 17 2015, 00:52) Мы гово...   Mar 16 2015, 21:54
|- - ViKo   Цитата(SM @ Mar 17 2015, 00:54) Да, в GF(...   Mar 16 2015, 22:02
|- - SM   Цитата(ViKo @ Mar 17 2015, 01:02) А вы ум...   Mar 17 2015, 05:23
- - ViKo   А вы замените умножение последовательными сложения...   Mar 17 2015, 05:57
|- - SM   Цитата(ViKo @ Mar 17 2015, 08:57) А вы за...   Mar 17 2015, 05:59
- - ViKo   http://depa.usst.edu.cn/chenjq/www2/softwa...calcu...   Mar 17 2015, 06:22
- - SM   А на заборе еще что-то написано. Мы сейчас обсужда...   Mar 17 2015, 06:30
|- - ViKo   Цитата(SM @ Mar 17 2015, 09:30) А на забо...   Mar 17 2015, 06:38
|- - SM   Цитата(ViKo @ Mar 17 2015, 09:38) Может, ...   Mar 17 2015, 06:41
|- - ViKo   Цитата(SM @ Mar 17 2015, 09:41) Нет. Мои ...   Mar 17 2015, 06:49
|- - SM   Цитата(ViKo @ Mar 17 2015, 09:49) что я п...   Mar 17 2015, 06:59
- - ViKo   Подождем... Я же показал частное и остаток. Програ...   Mar 17 2015, 07:06
|- - SM   Цитата(ViKo @ Mar 17 2015, 10:06) Я же по...   Mar 17 2015, 07:24
- - MrYuran   Не совсем понял, о чем идет речь, но для CRC (и во...   Mar 17 2015, 08:04
|- - ViKo   Цитата(MrYuran @ Mar 17 2015, 11:04) Не с...   Mar 17 2015, 09:30
|- - SM   Цитата(ViKo @ Mar 17 2015, 12:30) SM, вы ...   Mar 17 2015, 09:34
- - Timmy   Цитата(ViKo @ Mar 16 2015, 12:08) То есть...   Mar 17 2015, 08:35
- - ViKo   SM, я вижу, упорствование - ваш конек. Разберитесь...   Mar 17 2015, 09:37
|- - SM   Цитата(ViKo @ Mar 17 2015, 12:37) SM, я в...   Mar 17 2015, 09:42
- - ViKo   Ладно, делим. Получим для CRC-4 из 0x30 частное и ...   Mar 17 2015, 09:52
- - SM   Так ясно, откуда у Вас ошибка. Приписывание четыре...   Mar 17 2015, 10:00
- - ViKo   Приписывание нулей - чтобы было из чего остаток на...   Mar 17 2015, 10:03
|- - SM   Цитата(ViKo @ Mar 17 2015, 13:03) Приписы...   Mar 17 2015, 10:33
- - ViKo   Если вы не дополните число нулями, вы не сделаете ...   Mar 17 2015, 10:51
- - SM   Цитата(ViKo @ Mar 17 2015, 13:51) Если вы...   Mar 17 2015, 10:54
- - Dr.Alex   Конечно не было возможности всё прочитать, может у...   Mar 17 2015, 14:52
- - ViKo   Цитата(Dr.Alex @ Mar 17 2015, 17:52) Его ...   Mar 18 2015, 09:40
- - Dr.Alex   Цитата(ViKo @ Mar 18 2015, 12:40) А то кр...   Mar 18 2015, 10:40
- - ViKo   Цитата(Dr.Alex @ Mar 18 2015, 13:40) С ка...   Mar 18 2015, 11:08
- - Dr.Alex   Ну тогда 2-3-4 первых слова :-)))))))   Mar 18 2015, 11:27


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:57
Рейтинг@Mail.ru


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