![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
svyashennik |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Реализую алгоритм шифрования ГОСТ. В общем, бьюсь над следующей проблемой. После выполнения шфрования, файл раздувается в десятки раз. Вроде прогоняю по шагам уже, и всё равно не пойму. Может не туда смотрю?
Подазрение, всё же, вызывают вот эти строки:
Из-за сдвига влево может в старшие биты записывается инфа, но из-за типа переменной, она должна обрезаться. В остальном отдельные блоки вроде тестировал всё в норме. Может кто занимался этим вопросом? Подскажите плз. Прошу прощения если пишу криво, пишу так чтобы потом сам разобрался что написал=) Спасибо за понимание и подсказки. |
||||
|
|||||
WhKitten |
|
||||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.11.2010 Репутация: нет Всего: нет |
В алгоритме не разбирался. Но могу предположить в чём проблема.
Во первых ИМХО при шифровании мы исходный файл изменять не должны. А во вторых, мне кажестя, что вместо:
должно быть
Операции << и >> к продвижению типов гарантировано не приводят. |
||||
|
|||||
svyashennik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Согласен, но другого мне ничего не пришло в голову, а именно, чтобы получить два блока по 32 бита. Вот и решил добавить в конец файла символы, чтобы потом их удалить. но это вроде работает без нареканий. Для этого собственно и использую "ab', а не "wb". Но спасибо за комент.
|
|||
|
||||
WhKitten |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.11.2010 Репутация: нет Всего: нет |
Далее, читаем мы один символ из файла, а записываем 8?
см:
|
|||
|
||||
svyashennik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Нет, у меня сначала всё записывается в массивы, "левый" и "правый" по 4 байта каждый. Далее идёт их шифрация. А этот кусок кода говорит о записи полученных результатов. Что то не додумался коменты оставить. В общем вот.
|
|||
|
||||
WhKitten |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.11.2010 Репутация: нет Всего: нет |
А если countL==8, то значение countL больше меняться не будет и описанный выше код с двумя for будет выполнятся для каждого последующего прочитанного символа.
|
|||
|
||||
svyashennik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Спасибо большое, проблему нашёл, действительно, не обнулял счётчики=) Видимо две ночи без сна дают о себе знать. Тему закрываю.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |