|
38 / 13 / 6
Регистрация: 12.06.2013
Сообщений: 24
|
||||||||||||||||
Реализация алгоритма шифрования по ГОСТ 28147-8902.03.2014, 20:16. Показов 45643. Ответов 23
Добрый день! Пытаюсь реализовать все тот же алгоритм шифрования ГОСТ-89. Уже целую неделю долблюсь, и никак не могу понять, в чем моя ошибка. Значит, вкратце о проекте:
- В основе данного алгоритма лежит основной шаг криптопреобразования. Он реализован в структуре BasicSteep: Кликните здесь для просмотра всего текста
Механизм зашифровки 32-З реализован в классе E32: Кликните здесь для просмотра всего текста
Для расшифровки (32-Р) реализован аналогичный класс D32, отличается только порядком действий в методе DecryptFile() (1 раз К0-К7 и 3 раза К7-К0). Ошибка скорее всего заключена в самом алгоритме. Как я это понял: Если в методе EncryptFile() оставить только 2 строки
Надеюсь на вашу помощь) З.Ы.: Весь проект в прикрепленном файле. В папке Debug есть два файла: 1.txt - 8-ми байтовый текстовый файл для зашифровки и файл key - 256-битовый файл ключа.
4
|
||||||||||||||||
| 02.03.2014, 20:16 | |
|
Ответы с готовыми решениями:
23
Алгоритм шифрования ГОСТ 28147-89. Режим простой замены Нужны исходники программы шифрования и дешифрования файлов на базе алгоритма ГОСТ 28147-89 Реализация шифра ГОСТ 28147-89 |
|
38 / 13 / 6
Регистрация: 12.06.2013
Сообщений: 24
|
|
| 03.03.2014, 00:21 [ТС] | |
|
Всем спасибо, ошибку нашел, все работает. Если кому будет интересно - выложу исправленный код.
0
|
|
|
Администратор
|
|
| 03.03.2014, 11:49 | |
|
Andoku, был бы очень признателен за работающий код. Можете выложить сюда
0
|
|
|
38 / 13 / 6
Регистрация: 12.06.2013
Сообщений: 24
|
|||||||||||
| 03.03.2014, 13:58 [ТС] | |||||||||||
Сообщение было отмечено tezaurismosis как решение
Решение
tezaurismosis, без проблем. Ошибка была таки в алгоритме. Оказывается, последний шаг 32-З и 32-Р должен отличаться от предыдущих 31-го тем, что в нем не производится сдвиг по цепочке в конце.
Помимо этого исправления, провел рефакторинг кода, полностью сменил GUI (планирую развивать дальше, ввести режим гаммирования и имитовставки). Итак, структура BasicStep (изменения прокомментированы): Кликните здесь для просмотра всего текста
Класс реализации 32-З: Кликните здесь для просмотра всего текста
Проект в прикрепленном файле. Пока что работают только 4 кнопки: 1. Load для загрузки ключа из файла key. 2. Load для загрузки файла для шифрования. 3. Encrypt для запуска шифрования. 4. Decrypt для расшифровки.
5
|
|||||||||||
|
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
|
|
| 03.03.2014, 19:27 | |
|
Andoku, ты молодец. В шифровании не смыслю, но если это то, то наверное имело смысл унаследоваться от SymmetricAlgorithm.
P.S. а для устрашения класс назвать SovietUnionAlgorithm
0
|
|
|
38 / 13 / 6
Регистрация: 12.06.2013
Сообщений: 24
|
|
| 03.03.2014, 22:30 [ТС] | |
|
Петррр, спасибо
Да, он самый - ГОСТ 28147-89. Только я тоже в криптографии никакой, буквально 2 недели назад начал копаться. Вон про тот же SymmetricAlgorithm впервые от тебя услышал.З.Ы.: SovietUnionAlgorithm - ага, и главное на гитхабе им посветить, а то наши люди такого не боятся
0
|
|
|
3 / 2 / 1
Регистрация: 13.05.2013
Сообщений: 234
|
|
| 24.10.2014, 21:25 | |
|
Здравствуйте! Подскажите, пожалуйста, как адаптировать данный код для шифрования файлов? Не очень понимаю как это переделать(
0
|
|
|
4 / 4 / 0
Регистрация: 18.09.2008
Сообщений: 47
|
|
| 25.10.2014, 01:55 | |
|
Andoku, заметил такое поведение программы - вводим допустим слово "велоцираптор", делаем Encrypt и Decrypt, и на выходе имеем "велоцира".
0
|
|
|
38 / 13 / 6
Регистрация: 12.06.2013
Сообщений: 24
|
|
| 30.10.2014, 00:04 [ТС] | |
|
Сколько времени прошло, а тема еще жива
![]() DEMON_RUS, алгоритм работает с массивом байтов. Все, что вам нужно сделать - это преобразовать нужный файл в этот массив и скормить программе. ReM, это потому, что в том файле реализован только режим простой замены. Текст разбивается на блоки по 8 байт, остальное отбрасывается. Чтобы этого не было, нужна реализация гаммирования, тогда можно будет работать с любыми размерами текста и одинаковые куски текста будут иметь разный вид в зашифрованном виде. Оно пишется достаточно просто, вот ссылка на доработанную версию.
0
|
|
|
3 / 2 / 1
Регистрация: 13.05.2013
Сообщений: 234
|
|
| 28.01.2015, 19:14 | |
|
Andoku, Привет
Разбирал вашу прогу последнюю "Crypto2.zip" и нашел такое: шифруем значит исходный файл, получаем шифрованный (в вашем случае текст, в моем файл - не суть). Берем этот шифрованный и снова шифруем - получаем чудом исходный) Класс D-32 вообще нигде не используется как я понял.. Но тем не менее всё работает каким-то образом..) Подскажи, пожалуйста, может я что неправильно понимаю, аль где недоглядел..)
0
|
|
|
3 / 2 / 1
Регистрация: 13.05.2013
Сообщений: 234
|
|
| 11.02.2015, 19:44 | |
|
Может кто увидит, может кто поможет.. Разбирал программу последнюю по ссылке https://github.com/ViatcheslawS/Crypto
Переделал её под свои нужды (проект прикрепил) и выявил, что шифрование идёт неверно (если зашифровать исходный файл и потом снова этот зашифрованный файл ещё раз зашифровать - получаем нормальный исходный файл, что неверно) Пытался найти ошибку в отладчике - ввиду отсутствия опыта в программировании выявить ошибку самостоятельно мне не удалось.. Помогите разобраться, или подскажите каким способом можно это сделать (через отладчик к сожалению не смог( ) Может есть какие-нибудь проверочные данные, которые уже подсчитаны или что-то подобное.. Зацепка, которую тоже не смог применить в поиске ошибки: если зашифровать текст из 16 символов "0123456789ABCDEF", то после шифрования в файл будет писать следующий массив(фото1). Первые 8 байт различные цифры, а последующие 8 - почему-то нули.. если же зашифровать текст из 17 символов "0123456789ABCDEFG", то после шифрования в файл будет писать уже следующий массив(фото2). Help
0
|
|
|
3 / 2 / 1
Регистрация: 13.05.2013
Сообщений: 234
|
|
| 12.02.2015, 01:27 | |
|
Вообщем благодаря этой интересной статье разобрался что да как, может кому пригодится) Там есть примеры шифрования и реализации. (На языке "Глагол"
) И теперь знаю, что расшифрование в режиме гаммирования производится точно также, как и зашифрование, то есть функция зашифрования является одновременно и функцией расшифрования
0
|
|
|
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 4
|
|
| 16.02.2015, 17:23 | |
|
Andoku, Andoku, режим гаммирования и имитовставки получился?
0
|
|
|
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 3
|
||||||
| 25.06.2015, 11:43 | ||||||
|
Здравствуйте.
У меня есть несколько реализаций Основного шага (Р32). Первый я нашел вот здесь - Алгоритм шифрования ГОСТ 28147-89. Режим простой замены и второй вот здесь http://habrahabr.ru/post/256843/ Не смотря на то, что второй вариант мне показался более правильным при зашифровке и расшифровке правильный результат выводит только первый.
0
|
||||||
|
0 / 0 / 0
Регистрация: 28.10.2021
Сообщений: 14
|
|
| 23.05.2022, 18:20 | |
|
Подскажите,пожалуйста, а как реализовать в программе, чтобы исходное сообщение шифровалось в виде двоичных чисел?
0
|
|
|
Администратор
|
|
| 23.05.2022, 21:08 | |
|
vipip2007xp, что именно вы понимаете под двоичными числами и чем вас не устраивают числовые типы?
1
|
|
|
0 / 0 / 0
Регистрация: 28.10.2021
Сообщений: 14
|
|
| 24.05.2022, 17:40 | |
|
Это разве правильный вывод результата шифрования? Просто набор символов разного алфавита, или я чего-то не понимаю? Как пример, на втором скрине, показан принцип шифрования, где открытый и зашифрованный текст в виде 64 бит. Понятное дело, что открытый текст, как и ключ - это не строковый тип данных, также как и зашифрованное сообщение. А мне бы хотелось, чтобы в программе открытое сообщение в виде текста шифровалось на блоки равной длины по 64 бита.
0
|
|
|
Администратор
|
|||||||||||
| 24.05.2022, 22:26 | |||||||||||
|
vipip2007xp, если можно расшифровать, то значит правильный, но я понял о чем вы. Если вы смотрите программу из поста #4, то там есть строка в BaseForm.cs
2
|
|||||||||||
|
0 / 0 / 0
Регистрация: 28.10.2021
Сообщений: 14
|
|
| 25.05.2022, 08:40 | |
|
Добрый день! Спасибо Вам большое за помощь! Все получилось. Скажите, а вывод результата шифрования нельзя никак сделать в виде двоичных числе, т.е. нолики и единицы? Чтобы каждый символ исходного сообщения при шифровании был представлен в виде двоичного числа. Или же сам C# не позволяет это сделать?
0
|
|
|
Администратор
|
|||
| 25.05.2022, 11:01 | |||
|
vipip2007xp, можно и то и другое.
Convert.ToString(byte, 2).PadLeft(8, '0') + цикл, например.
2
|
|||
| 25.05.2022, 11:01 | |
|
Помогаю со студенческими работами здесь
20
Реализация алгоритма ГОСТ Р 34.10-94
Рализовать Si блок алгоритма шифрования ГОСТ 28147 алгоритм шифрования ГОСТ 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 .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|