|
0 / 0 / 2
Регистрация: 09.06.2014
Сообщений: 14
|
||||||
ГОСТ 28147-8905.01.2017, 18:30. Показов 4066. Ответов 3
73 3d 2c 20 65 68 65 73 74 74 67 69 79 67 61 20 62 6e 73 73 20 65 73 69 32 6c 65 68 33 20 6d 54,
шифрую 00 00 00 00 00 00 00 00. В начале разбиваю текст на две половины: B = 00 00 00 00 и A = 00 00 00 00 и ключ на 8 частей: K1 = 33 20 6d 54, K2 = 32 6c 65 68, K3 = 20 65 73 69, K4 = 62 6e 73 73, K5 = 79 67 61 20, K6 = 74 74 67 69, K7 = 65 68 65 73, K8 = 73 3d 2c 20. Затем складываю A с K1 по модулю 2 в 32 степени, получаю 33 20 6d 54. В качестве таблицы замен использую: {4, e, 5, 7, 6, 4, d, 1}, {a, b, 8, d, c, b, b, f}, {9, 4, 1, a, 7, a, 4, d}, {2, c, d, 1, 1, 0, 1, 0}, {d, 6, a, 0, 5, 7, 3, 5}, {8, d, 3, 8, f, 2, f, 7}, {0, f, 4, 9, d, 1, 5, a}, {e, a, 2, f, 8, d, 9, 4}, {6, 2, e, e, 4, 3, 0, 9}, {b, 3, f, 4, a, 6, a, 2}, {1, 8, c, 6, 9, 8, e, 3}, {c, 1, 7, c, e, 5, 7, e}, {7, 0, 6, b, 0, 9, 6, 6}, {f, 7, 0, 2, 3, c, 8, b}, {5, 5, 9, 5, b, f, 2, 8}, {3, 9, b, 3, 2, e, c, c}. 3 заменяю на 2, 3 на c, 2 на 1, 0 на 7, 6 на d, d на c, 5 на f, 4 на 5. Получаю 2c 17 dc f5. Циклический сдвиг влево на 11 бит даёт: be e7 a9 60 Далее полученный результат XOR B и получаю be e7 a9 60 Теперь сама проблема: После всех 32 шагов цикла результат должен быть равен 42 AB BC CE 32 BC 0B 1B (пример из ГОСТ 34.11-94. https://ru.wikipedia.org/wiki/... 0_34.11-94), но он получается другим. Подскажите, пожалуйста, что я делаю неправильно? Код на java:
0
|
||||||
| 05.01.2017, 18:30 | |
|
Ответы с готовыми решениями:
3
Программирование ГОСТ 28147-89 ГОСТ 28147 ГОСТ 28147-89 на C++ |
|
0 / 0 / 2
Регистрация: 09.06.2014
Сообщений: 14
|
|
| 17.01.2017, 12:56 [ТС] | |
|
Ошибся при делении ключа на 8 частей и при использовании таблицы замен. Необходимо было начинать заменять с конца строки.
ГОСТ 28147-89 в режиме простой замены. Алгоритм. K – ключ. A – младшие биты. B – старшие биты. Ключ K разбивается на 8 ключей, причём K = {K8, K7, K6, K5, K4, K3, K2, K1}. A складывается с одним из 8 получившихся ключей по модулю 2 в степени 32. Получаем S = (A + Ki) mod 2^32. Полученное S разбивается на 8 частей, причём S = {S8, S7, S6, S5, S4, S3, S2, S1}. Далее полученные 4-х битные символы преобразуются при помощи таблицы замен. Первым идёт S1, получается S1’, затем S2, получается S2’ и так далее. После этой операции получаем S’ = {S8’, S7’, S6’, S5’, S4’, S3’, S2’, S1’}. Далее полученное S’ циклически сдвигаем влево на 11 бит, получаем R. Теперь, применяя операцию XOR, получим результат шага: RESULT = R XOR B. Производим перестановку: B = A, A = RESULT. В цикле 32 шага. Первые 24 шага ключи подаются в порядке K1, K2, K3, K4, K5, K6, K7, K8, K1, K2, K3, K4, K5, K6, K7, K8, K1, K2, K3, K4, K5, K6, K7, K8 . С шага 25 по 32 ключи подаются в обратном порядке: K8, K7, K6, K5, K4, K3, K2, K1. После 32 шагов результат склеивается следующим образом – сначала идут младшие биты A, затем старшие биты B. Подробный пример первого шага цикла. K = 73 3d 2c 20 65 68 65 73 74 74 67 69 79 67 61 20 62 6e 73 73 20 65 73 69 32 6c 65 68 33 20 6d 54, шифрую 00 00 00 00 00 00 00 00. В начале разбиваю текст на две половины: B = 00 00 00 00 и A = 00 00 00 00 и ключ на 8 частей: K8 = 73 3d 2c 20, K7 = 65 68 65 73, K6 = 74 74 67 69, K5 = 79 67 61 20, K4 = 62 6e 73 73, K3 = 20 65 73 69, K2 = 32 6c 65 68, K1 = 33 20 6d 54. Затем складываю A с K1 по модулю 2 в 32 степени, получаю 33 20 6d 54. В качестве таблицы замен использую таблицу замен ЦБ РФ: {4, e, 5, 7, 6, 4, d, 1}, {a, b, 8, d, c, b, b, f}, {9, 4, 1, a, 7, a, 4, d}, {2, c, d, 1, 1, 0, 1, 0}, {d, 6, a, 0, 5, 7, 3, 5}, {8, d, 3, 8, f, 2, f, 7}, {0, f, 4, 9, d, 1, 5, a}, {e, a, 2, f, 8, d, 9, 4}, {6, 2, e, e, 4, 3, 0, 9}, {b, 3, f, 4, a, 6, a, 2}, {1, 8, c, 6, 9, 8, e, 3}, {c, 1, 7, c, e, 5, 7, e}, {7, 0, 6, b, 0, 9, 6, 6}, {f, 7, 0, 2, 3, c, 8, b}, {5, 5, 9, 5, b, f, 2, 8}, {3, 9, b, 3, 2, e, c, c}. 4 заменяю на d, 5 на d, d на 0, 6 на 9, 0 на 6, 2 на a, 3 на 1, 3 на 0 Получаю 01 a6 90 dd. Циклический сдвиг влево на 11 бит даёт: 34 86 e8 0d Далее полученный результат XOR B и получаю 34 86 e8 0d Теперь B = A = 00 00 00 00 A = 34 86 e8 0d Результат 32 шагов будет 42 ab bc ce 32 bc 0b 1b
0
|
|
|
1 / 1 / 0
Регистрация: 06.05.2014
Сообщений: 84
|
||||||
| 18.01.2017, 09:58 | ||||||
|
код совсем свежий и рабочий, описывается только базовый шаг в коде, разбиение ключа уже вижу понял, не забудь про особенность сети Фейстеля, на последнем цикле A и B не меняются
Я бы не советовал бы операться на источники, в которых не предусмотрены особенности перевода строки в число и обратно, это был косяк у меня, я написал прогу и просто вывел все данные, но данными, которые получил ручками на листочке, не совпадали.
1
|
||||||
|
0 / 0 / 2
Регистрация: 09.06.2014
Сообщений: 14
|
|
| 18.01.2017, 13:45 [ТС] | |
|
Спасибо) Я расписал шаг, чтобы было наглядно видно, что за чем идёт) Посчитано ни в коем случае не на листочке)
0
|
|
| 18.01.2017, 13:45 | |
|
Помогаю со студенческими работами здесь
4
Криптопровайдер ГОСТ 28147 - 89 ГОСТ 28147 Гаммирование Шифрование ГОСТ 28147–89 Шифрование ГОСТ 28147-89 алгоритм шифрования ГОСТ 28147-89 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|