![]() |
|
![]() ![]() ![]() |
|
Atanvarno |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.12.2007 Репутация: нет Всего: нет |
Реализация алгоритма взята отсюда: http://en.wikipedia.org/wiki/Rc4
В результате программа работает очень странно, шифрует только до какого-то символа, потом перестаёт шифровать. В общем, выходит какая -то ахинея. Вот исходник: http://dump.ru/file/2865530 У меня возникает стойкое ощущение, что я не вижу какой-то элементарной ошибки. Буду благодарен, если кто-нибудь подскажет. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Во первых (если мне не изменяет мой склероз), все числа 255 в RC4 надо заменить на 256
Во вторых - вот эти строки if (c[y]==NULL) break; у вас прекращают шифрование, если в потоке получится нулевой символ (а он получится, т.к. после шифрования поток уже не текстовый а бинарный, и в нем имеет право появится ЛЮБОЙ символ) |
|||
|
||||
Atanvarno |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.12.2007 Репутация: нет Всего: нет |
Да, про NULL я понял, спасибо.
Насчёт 256 - дело явно не в этом, программа вообще перестала работать. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
255/256 будет влиять на криптографические качества генерируемой последовательности (RC4). Работать оно будет в любом случае и на глаз отличия не заметишь. Отличия будут, если применить криптоанализ к результату, скорее всего устойчивость к взлому снизится (да и RC4 это уже называть нельзя будет
![]() |
|||
|
||||
Atanvarno |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.12.2007 Репутация: нет Всего: нет |
Так дело в том, что она не работает ни в первом, ни во втором варианте.
![]() ![]() |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
В смысле 'не работает'? Перестает шифровать в середине блока? Это из за if (c[y]==NULL) break;
А так же из за y < strlen((unsigned unsigned char*)c) в условии for И вообще - пользоваться строковыми функциями для обработки бинарных данных - явно не самая удачная идея ![]() Если вам нужно перекодировать файл, так и пишите:
![]() |
|||
|
||||
Atanvarno |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.12.2007 Репутация: нет Всего: нет |
xvr,Спасибо Вам большое!
Таперича всё работает аки часы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |