Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм шифрования по ГОСТу, Неуловимая ошибка шифрования 
:(
    Опции темы
Sergonas
Дата 15.11.2012, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 14.10.2008

Репутация: нет
Всего: нет



Вот уже второй день мучаюсь с этой программой. Хотел реализовать шифрование по ГОСТу методом простой вставки.
Проблема в том, что все компилируется, все работает, но, увы, не правильно. Т.е. после шифровки-дешифровки я получаю не исходный файл, а тарабарщину. Основной шаг криптопреобразования проверен 50 раз, и должен быть верен. Думаю стоит копать в сторону дешифровки, но ошибок не вижу
Прошу, посмотрите, может Вы увидите ошибку.
код на pastebin

Также таблица перестановок. Как ключ использую "qwertasdfgqwertasdfgqwertasdfgqw". 

Проект в VS2012 приложил.

Это сообщение отредактировал(а) Sergonas - 15.11.2012, 20:45

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Encrypter.rar 26,21 Kb
PM MAIL   Вверх
borisbn
Дата 16.11.2012, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Внимательно не смотрел, но это
static_cast<int>(pow(2,32));
кажется подозрительным


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Sergonas
Дата 16.11.2012, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 14.10.2008

Репутация: нет
Всего: нет



Мне тоже не нравится т.к. возможно переполнение, но, к сожалению, я не знаю как другим способом реализовать данный шаг криптования: S = N1 + X (mod 2^32). Пробовал просто заменить int на unsigned int и long. С unsigned программа вылетает из-за division by zero :(
PM MAIL   Вверх
borisbn
Дата 16.11.2012, 12:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Код
S = (unsigned long long)(N1 + X) ( 1ULL << 32 );



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
feodorv
Дата 16.11.2012, 17:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(Sergonas @  16.11.2012,  12:58 Найти цитируемый пост)
mod 2^32

это остаток от деления на 2^32? Тогда вообще ничего делать не надо:
Код

S = N1 + X;

при условии, что S, N1 и X имеют тип unsigned int.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0612 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.