Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/133: Рейтинг темы: голосов - 133, средняя оценка - 4.91
dyid_omsi

Алгоритм ГОСТ ( простой) для STM32

12.11.2015, 13:14. Показов 28257. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//таблица замены
static const char Table[8][16]={
{0x04,0x0a,0x09,0x02,0x0d,0x08,0x00,0x0e,0x06,0x0B,0x01,0x0c,0x07,0x0f,0x05,0x03},
{0x0e,0x0b,0x04,0x0c,0x06,0x0d,0x0f,0x0a,0x02,0x03,0x08,0x01,0x00,0x07,0x05,0x09},
{0x05,0x08,0x01,0x0d,0x0a,0x03,0x04,0x02,0x0e,0x0f,0x0c,0x07,0x06,0x00,0x09,0x0b},
{0x07,0x0d,0x0a,0x01,0x00,0x08,0x09,0x0f,0x0e,0x04,0x06,0x0c,0x0b,0x02,0x05,0x03},
{0x06,0x0c,0x07,0x01,0x05,0x0f,0x0d,0x08,0x04,0x0a,0x09,0x0e,0x00,0x03,0x0b,0x02},
{0x04,0x0b,0x0a,0x00,0x07,0x02,0x01,0x0d,0x03,0x06,0x08,0x05,0x09,0x0c,0x0f,0x0e},
{0x0d,0x0b,0x04,0x01,0x03,0x0f,0x05,0x09,0x00,0x0a,0x0e,0x07,0x06,0x08,0x02,0x0c},
{0x01,0x0f,0x0d,0x00,0x05,0x07,0x0a,0x04,0x09,0x02,0x03,0x0e,0x06,0x0b,0x08,0x0c}};
//Ключ
unsykned int NewKey[8]={123,456,789,1011,1213,1415,1617,1819};
 
/*кодирование
Dat - буфер,выравненный по  32 байт
size размер в  блоках по 64 бита
mode - 0 кодировать
1 раскодировать
*/
 
void Crupt(unsykned int *Dat,unsykned int  *Key,char size,char mode)
{
//таблица таблиц подстановки. имеем 1 копию ключа, таблица говорит
//какие элементы на каком шаге использовать
static   const char KeyMap[2][32]={
{0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0},
{0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0}};
 
unsykned  char Step,m,i;
unsykned int L,R,S,K;
 
while (size)
{
L=   Dat[0];
R=   Dat[1];
for(Step=0;Step<32;Step++)
{
// ключ текущего шага
K=   Key[KeyMap[mode][Step]];
S=   R+K;//сумма
//подстановка
for (m=0;m<8;m++)
{
i=(char) S&0x0f; //возьмем 4 бита
S&=~0xf;               //сбросим младшие 4 бита
S|=   (Table[m][i])&0x0f;      //берем 4 бита подстановки
__asm {ror S,4} //провернем вправо на 4 бита
}
__asm {ror S,21} //провернем влево на 11 бита
K=S^L; //xor левый и результат
L=R;
R=K;
}
//меняем местами младший и старший
Dat[0]=R;
Dat[1]=L;
Dat+=2; //следующий блок
size--;
}
}
Пример штфрование

Code
1
2
3
4
5
6
//исходный текст
char Text[16]="Строку кодируем;
//Ключ
unsykned int NewKey[8]={123,456,789,1011,1213,1415,1617,1819};
//зашифровать
Crupt((unsykned int *) &Text,NewKey,2,0 );
В результате в массиве Text будет зашифрованный текст
Code
1
2
//Расшифровать
Crupt((unsykned int *) &Text,NewKey,2,1 );
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.11.2015, 13:14
Ответы с готовыми решениями:

ГОСТ 28147-89 Режим простой замены. Алгоритм
Добрый день. Решил написать программу, позволяющую зашифровать и расшифровать текст по ГОСТу 28147089 режимом простой замены. Программу...

Алгоритм шифрования ГОСТ 28147-89. Режим простой замены
Реализовывал алгоритм по wiki. Но что то не то получилось.Вот код: using System; using System.Collections; using...

Алгоритм блочного шифрования ГОСТ 28147-89 в режиме простой замены
Добрый вечер! Нашел программную реализацию на С++ алгоритма блочного шифрования ГОСТ 28147-89 в режиме простой замены. Можете объяснить,...

49
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
30.11.2015, 17:35
Студворк — интернет-сервис помощи студентам
о, мне показалось, или градус трололо стал падать?:)
Цитата Сообщение от SGE
Очередная твоя ложь, так как изначально всё завертелось именно вокруг этих констант. Даже в статье, которую ты сам привел, говорится о дистанции Хэмминга именно в ключе выбора констант 0x55 и 0xAA.
любезный, приведи номер страницы в пдф, на которой говорится, что в HMAC используются константы 55 и АА?
Цитата Сообщение от SGE
XOR 0x55/0xAA именно это и делает, гарантирует РАЗРЯЖЕНИЕ однообразностей в виде многих нулей или единиц подряд. Таким образом обеспечивается равномерность и дистанция Хэмминга.
данные, поступающие на вход HMAC - абсолютно произвольные, а т.ч. могут быть все АА или все 55. что в этом случае даст твое разряжение? в любых схемах кодирования, где применяется скрэмблинг для "разряжения", не используется ксор на одну и ту же константу.
Цитата Сообщение от SGE
Так как XOR на константу 0x55/0xAA гарантированно убирает любые длинные последовательности нулей и единиц. Это и есть то разряжение, о котором я сказал две страницы назад.
сказать ты сказал, а как это относится к HMAC-то? или к той фразе из цитаты? там ни констант таких, ни нет на входе длинных последовательностей 0 и 1. даже во фразе говорится о том, что расстояния х. выбирались именно для падов, а не для данных. более того, цель преследуется получить 2 разных ключа, не связанных с первоначальным, чтобы были разные IV на момент хеширования данных, и не более того. если бы не требовалось получить 2 РАЗНЫХ ключа (отличных от первоначального), один из ключей можно было бы не ксорить.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
30.11.2015, 23:46
Цитата Сообщение от SGE
А это без разницы, в стандартной HMAC выбраны константы x5c и x36
ой, да неужели доку открыл? ты ж клялся, что там 55 и АА?
Цитата Сообщение от SGE
в данном контексте они делают абсолютно тоже самое что и 0xAA и 0x55 в моих изначальных словах - а именно, прореживание однородностей длинных последовательностей нулей и единиц для обеспечения нужной дистанции Хемминга (ты сам дал пруф этому).
утомил... математически да, они это делают. цель этой операции была вовсе не в этом. криптофункциям положить на однородности просто по определению, понимаешь?
Цитата Сообщение от SGE
Прямо относится, так как суть одна и та же, константы можно брать любые, удовлетворяющие нужной дистанции Хеммиинга, просто 0xAA и 0x55 лучше подходят в одних случаях, а x5c/x36 в других.
можно конкретный пример на цифрах, где 5с и 36 будут лучше чем 55 и АА?
Цитата Сообщение от SGE
Именно потому и ксорят ОБА ключа, что это сделано не только для гарантированного получения разных ключей, но и для прореживания ключей, т.е. для нужной дистанции Хемминга (в данном случае перед хешированием).
пруф?
вот пруф про разные ключи есть в доке, очень длинный и последовательный, через описание другого МАС. и если бы они не ставили целью получить из k различные k1 и k2, один из ключей они бы добили нулями и всё. нет никакого смысла ничего ксорить перед хешированием с т.з. криптографии. хемминг там упомянут только для того, чтобы сказать, что ключи довольно сильно отличаются ДРУГ ОТ ДРУГА. ни про какое разрежение там речь не идет.
Цитата Сообщение от SGE
Ну, и что теперь, будешь и дальше троллить своё самолюбие или как ?
нет, буду добиваться, чтоб доку ты скурил. прогресс уже пошел:)
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
01.12.2015, 01:21
Я что-то потерял нить спора.
Все началось с утверждения, что xor c константами 0xАА и 0х55 как-то гарантированно разряжает длинные последовательности нулей и единиц. Борьба с неслучайными последовательностями без изменения скорости передачи называется скрэмблированием, и применение в качестве скррэблера xor с константой - это плохой, негодный скрэмблер. Если цель именно в "перемешивании" входящего потока, то надо брать другие функции.
Потом влез как-то HMAC, который к скрэмблированию никаким боком. И самое интересное, что использование констант 0x55 и 0xAA вместо рекомендуемых 0x5С/0x36 приведет к ослаблению алгоритма, поскольку ключи станут статистически зависимые друг от друга (тупо являться инверсией друг друга). Поэтому задача выбора ipad/opad не в максимизации расстояния Хэмминга, а в выборе достаточного расстояния. 4 вполне хватит. И 4 лучше, чем 3 и лучше чем 5.
Так о чем спор?
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
01.12.2015, 06:20
Цитата Сообщение от Stiit.mi
Я что-то потерял нить спора.
Все началось с утверждения, что xor c константами 0xАА и 0х55 как-то гарантированно разряжает длинные последовательности нулей и единиц.
я зануда. вот как все началось:
Цитата Сообщение от SGE
Цитата Сообщение от oomomstir
Пример: данные, подаваемые на AES, предварительно ксорятся на 55h (предельно бесполезно, но иллюстрирует идею).
xor 55h (AAh) не как доп. шифрование. Это прореживание однообразных последовательностей, т.е. чтобы подряд много нулей или много единиц не было. Обычно как предварительная подготовка ключей, но часто и сами данные так прореживают.
oomomstir привел абсолютно правильный пример, где xor полностью бессмысленный. на что краптограф SGE сказал, что лучше прореживать. я возразил. а он такой:
Цитата Сообщение от SGE
Скажи это математикам, они тебя сразу каками закидают. Ключ или данные с большими последовательностями нулей или единиц понижают в разы крипкостойкость. Прореживание убирает подобную однородность.
бред, возведенный в абсолют. я припомнил единственный пример, который я знаю, который ксорит ключ на что-то - HMAC. вроде вполне себе нить спора:) ну и до сих пор SGE не понял назначение тех ксоров, т.к. не асилил прочитать документ и вникнуть.
Цитата Сообщение от Stiit.mi
ключи станут статистически зависимые друг от друга (тупо являться инверсией друг друга). ... Так о чем спор?
они и так зависимые, причем линейно. а спор о бесполезности разряжения для криптофункций.
SGE"]Ты опять начал жирно троллить, я говорил о случаях прореживания, а не конкретно о константах[/QUOTE]
показалось значит. ты так убежденно говорил, что именно там не зря выбраны именно 55 и АА.
SGE писал(а):
Ну вот теперь ты наконец признался.
и что мы будем делать со знанием, что у спичек сама сера липкая? и именно это позволяет ей налипать на палочку. спасибо тебе, капитан очевидность, а то мы думали, ну как же можно без клея? только вот он реально на горение не влияет, если рассматривать химическую реакцию, то клей там вообще особой роли не играет. но ты упорно доказываешь, что без клея ну никак, горит типа гораздо хуже. молодец, чо.
SGE писал(а):
Конкретно эти для HMAC.
я просил в цифрах. это же элементарно - привести однострочный пример?
SGE писал(а):
Мало того, предварительным добавлением нулей, о которых ты пишешь, выравнивают размеры. Эти нули прореживают в любом случае.
*фэйспалм*
вот ты понимаешь, что без ухудшения свойств HMAC можно взять один пад как ключ, дополненный нулями, а второй как этот же ключ, но заксоренный на константу?
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
01.12.2015, 15:54
ооо, теперь градус троллинга зашкалил:) видать аргументы кончились:)
Цитата Сообщение от SGE
Размерность Хемминга разная, самому посчитать уже слабо ? Там школьник любой справится.
естессно слабо! у меня не сходится. это ты там что-то заявил, тебе и объяснить дураку. было бы не слабо, не просил бы пример.
Цитата Сообщение от SGE
Специально прореживают оба не просто так, я уже говорил зачем. Но ты в силу твоих проблем не можешь это понять. Притом споришь не со мной, ты споришь с алгоритмом твоего же примера в виде HMAC.
собс-но, надо было с этого начать, не было бы столько говна. в доке авторы всё объясняют, зачем они все делают так как делают, но доку ты не читаешь, придумываешь сам. да не вопрос! заблуждайся дальше.

просто понимаешь, элементарно доказать, что добивать один ключ нулями, а второй ксорить - это то же самое, что ксорить оба:) надежность не может от этого упасть.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
01.12.2015, 16:50
Цитата Сообщение от SGE
почему ты называешь алгоритм HMAC бредом
пруф?
Цитата Сообщение от SGE
Это уже твоя проблема, а заявил не я, заявлял ты сам, отрицая адекватность HMAC.
у меня ощущение, что ты бухой. это ты писал:
Цитата Сообщение от SGE
константы можно брать любые, удовлетворяющие нужной дистанции Хеммиинга, просто 0xAA и 0x55 лучше подходят в одних случаях, а x5c/x36 в других.
вот и приведи пример, для каких данных 5c/36 лучше чем AA/55, без отсылок куда-то там, а просто цифрами. или с математикой всё плохо у тебя?
Цитата Сообщение от SGE
Я всего лишь повторяю одно и тоже на протяжении двух страниц.
именно! как баран:)
Цитата Сообщение от SGE
Ну да, авторы алгоритма HMAC дураки, раз не слушают таких умников как ты.
они не дураки, они нормально все объяснили в доке, которую ты не читал:) так кто тут дурак-то?:)
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
01.12.2015, 19:39
Бедный Хэмминг в гробу уже дно протер. И в HMAC ключи не для "прореживания" xor-ятся.
И "прореживание" называется "скрэмблирование".
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
01.12.2015, 20:57
жыра не просто уже много, а он уже кипит!!! :)))) прикольно, конечно, но туповато:)
SGE, короч ты меня утомил. подводи итоги про меня как ты там делал и пока перерыв, до новых твоих перлов:)
Цитата Сообщение от Stiit.mi
И в HMAC ключи не для "прореживания" xor-ятся.
оххх, зря ты это сказал;))))
Цитата Сообщение от Stiit.mi
И "прореживание" называется "скрэмблирование".
и это тоже зря:)))
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
01.12.2015, 21:58
ты такой проницательный:) по жиру - ты абсолютный чемпион:)
0
0 / 0 / 0
Регистрация: 14.08.2014
Сообщений: 31
10.12.2015, 23:57
Вот моя реализация ГОСТ 28147-89
http://symplecan.16mb.com/my-software.html
Может кому пригодится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2015, 23:57
Помогаю со студенческими работами здесь

Реализовать алгоритм блочного шифрования ГОСТ 28147-89 в режиме простой замены
Добрый день! Подскажите, пожалуйста, как реализовать алгоритм блочного шифрования ГОСТ 28147-89 в режиме простой замены в Matlab?!

Алгоритм ГОСТ 28147-89 для изображений
Здравствуйте! Есть алгоритм ГОСТ 28147-89 для файлов текстового формата, а нужно для изображений. Что необходимо изменить в программе для...

Не работает шифрование по ГОСТ 28147-89, ГОСТ Р 34.10-2001,ГОСТ Р 34.11-94 (ASP.NET)
Создавал веб-приложение(ASP.Net) для шифрования по данным гостам, нашёл по данной теме код, но он не рабочий(VS ошибок не выдаёт, но при...

ГОСТ 28147-89. Метод простой замены
Доброй ночи, уважаемые форумчане! У меня есть исходный код программы: ...

ГОСТ 28147-89 режим простой замены
Добрый день, уважаемые формучане. Решил написать программу, которая реализует ГОСТ в режиме простой замены. Вот код: // 212.cpp:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
50
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru