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