|
|
||||||
Алгоритм шифрования ГОСТ 28147-89. Режим простой замены12.03.2014, 16:39. Показов 16128. Ответов 16
Реализовывал алгоритм по wiki. Но что то не то получилось.Вот код:
P.S. Если возникли не понимания в коде спрашивайте разъясню: что делает, почему и как
0
|
||||||
| 12.03.2014, 16:39 | |
|
Ответы с готовыми решениями:
16
Нужны исходники программы шифрования и дешифрования файлов на базе алгоритма ГОСТ 28147-89 ГОСТ 28147-89 режим простой замены |
| 12.03.2014, 17:01 | |
|
Не по теме: Это вообще что такое??? :-|
0
|
|
|
|
||
| 12.03.2014, 19:42 [ТС] | ||
|
Да и в заголовке указано что хотелось бы получить. Добавлено через 2 минуты Не по теме: taksebe, Я тоже на любой не понятный мне код могу написать как вы. НО, ведь можно же просто указать где именно не понятно. Или вам глобально все не понятно т.е. как объявлять переменные, методы и т.п.
0
|
||
|
38 / 13 / 6
Регистрация: 12.06.2013
Сообщений: 24
|
|
| 15.03.2014, 14:15 | |
|
magnum1992, похоже, у Вас есть небольшие пробелы в понимании самого алгоритма. Я сильно не копался в коде, но что бросается в глаза:
1. У Вас нету сложения по модулю 2^32, у Вас просто сложение. 2. Вместо циклического сдвига на 11 бит влево у Вас просто сдвиг на 11 бит влево. В общем, если хотите разобраться в алгоритме, лучше почитайте Винокурова, там подробно и доступно написано. Кроме того, вот моя тема, в которой я реализовал рабочий алгоритм простой замены: Реализация алгоритма шифрования по ГОСТ 28147-89. Если понадобится реализация режима гаммирования или алгоритм генерации случайных 256-битовых ключей и 64-х битовой синхропосылки, можете заглянуть сюда.
0
|
|
|
|
|||||||||||||||||
| 16.03.2014, 20:18 [ТС] | |||||||||||||||||
|
Andoku, Про циклический сдвиг я понял и уже переделал
. А на счет сложения по модулю 2^32 насколько мне известно 32-х битные числа итак складываются по модулю 2^32Добавлено через 3 минуты Я вынес весь алгоритм в отдельный класс и оформил более понятнее. Все перепроверил исправил несколько ошибок и получил в итоге что если я ввожу слово helloooo то он мне возвращает шифрованное слово oooohell и потом если его расшифровать возвращает исходное слово. Так вот где возможна ошибка? Добавлено через 58 секунд Не по теме: Может быть все правильно и это алгоритм так шифрует что бы никто не догадался:D Добавлено через 18 минут Andoku, Я на первый взгляд глянул ваш код и вот какие вопросы появились: Фрагмент вашего кода:
Добавлено через 1 минуту Кликните здесь для просмотра всего текста
Вот мой класс Добавлено через 30 минут Andoku,
1
|
|||||||||||||||||
|
38 / 13 / 6
Регистрация: 12.06.2013
Сообщений: 24
|
|||||
| 16.03.2014, 21:07 | |||||
![]()
0
|
|||||
|
|
||||||
| 16.03.2014, 22:26 [ТС] | ||||||
|
В общем проблема решена путем разделения сети Фейстеля в отдельный метод. В методе en/decodePartData на столько было все запутано что уже и сам толком не мог разделить где что.
Вот полностью рабочий класс:
3
|
||||||
|
38 / 13 / 6
Регистрация: 12.06.2013
Сообщений: 24
|
|
| 16.03.2014, 23:12 | |
|
magnum1992, объясню, почему у тебя так вышло: смотри, ты в основном шаге криптопреобразования делаешь сдвиг, то есть меняешь R на L. Далее, в методах en/decodePartData ты в конце еще раз переставляешь R и L (не знаю, есть ли эта операция в Википедии, но по Винокурову ее быть не должно). То есть, если бы в последнем шаге ты не делал эту самую перестановку R и L, тебе бы не пришлось еще раз менять их местами в en/decodePartData. Так что по сути, ты все равно не делаешь сдвиг по цепочке на последнем шаге
1
|
|
|
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
|
||||||
| 21.12.2014, 17:03 | ||||||
|
magnum1992,
0
|
||||||
|
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 3
|
||||||||||||||||
| 21.01.2015, 10:50 | ||||||||||||||||
|
magnum1992, спасибо за представленную реализацию. У меня несколько вопросов:
1. Проверял ты свой код на примере из Госта 34.11-94? В приложении А представлен процесс получения хэша, для шаговой функции строка 00000000 00000000 шифруется ключом 733d2C20 65686573 74746769 79676120 626e7373 20657369 326c6568 33206d54 на таблице замен, как у тебя, и получается 42ABBCCE 32BC0B1B. Я как крутил, у меня так и не получилось.. ![]() Потом я нашел этот пример в RFC 5831RFC 5831. В нем вроде написано, что это перевод, хотя значения ключа для шифрования другое.. . Как будто переставлены местами 4 и 7 октет.K[1] = 733D2C20 65686573 74746769 326C6568 626E7373 20657369 79676120 33206D54 Я опять попробовал зашифровать и опять значения получились отличные от тех, что должны были. Потом я посмотрел твою реализацию. В методе func(UInt32 R, UInt32 Ki) в части сбора частей после замены:
По идее надо переставить строки в коде местами, т.е.
Дальше я посмотрел, что ты инвертируешь partsS до замены, а после замены - нет и сдвигаешь уже перевернутый uint. Как я понял, надо перевернуть после замены обратно, что я и сделал, но это тоже не помогло ![]() Я решил попробовать другие реализации - и из openssl, и ту которую сделал Andoku. Так и не получилось у меня.. Я решил написать свою В приложении к сообщению - моя реализация... но пример запустить у меня так и не получилось.. Может есть у кого рабочий пример? Или может кто знает, как запустить представленные реализации госта, чтоб он заработал? P.S. для запуска моей реализации - код такой: Кликните здесь для просмотра всего текста
Заранее спасибо!!
0
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 3
|
|||||||||||
| 22.01.2015, 09:47 | |||||||||||
|
Все, понял.. Ключ в примере из ГОСТа 43.11-94 надо было перевернутым задавать.
т.е. вместо
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 04.12.2015
Сообщений: 2
|
|
| 10.12.2015, 20:15 | |
|
А можно как нибудь этот код связать с файлом. Что бы тот его шифровал и расшифровал?
0
|
|
|
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 3
|
|
| 11.12.2015, 14:48 | |
|
Да, можно. Я дал ссылку на свое приложение, но модератор ее стер за рекламу. Поищите в интернете.
0
|
|
|
Администратор
|
|
| 12.12.2015, 01:35 | |
|
GPrarok, в теории да. Методы SimpleEncoding/SimpleDecoding принимают на вход массив байт. Читаем файл с помощью File.ReadAllBytes и шифруем. Однако больщие файлы так не зашифровать из-за банальной нехватки ОЗУ. Плюс реализация принимает данные с длинами кратными восьми. Надо дописывать шифрование под данные произвольной длиный используя метод GammaСoding(byte[] data, byte[] s).
1
|
|
|
0 / 0 / 0
Регистрация: 04.12.2015
Сообщений: 2
|
|
| 12.12.2015, 21:28 | |
|
Спасибо большое, вот насчет метода GammaСoding(), поискал в интернете, не совсем разобрался как он будет работать, можете показать пример реализации в данном коде пожалуйста.
0
|
|
|
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
|
||||||
| 02.11.2018, 23:06 | ||||||
0
|
||||||
| 02.11.2018, 23:06 | |
|
Помогаю со студенческими работами здесь
17
Гост 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 .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|