Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XOR-шифрование 
:(
    Опции темы
mr.Anderson
Дата 29.5.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



У меня небольшая проблема с этим шифрованием... Оказалось, он не шифрует символ переноса строки. И, значит, как мне кажется, не шифрует и символ табуляции. Это исправляемо? 


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Сый
Дата 29.5.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Странный вопрос. Что передаёшь функции/задаче, то и шифруется (если она, конечно, нормально реализована). 
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
maxim1000
Дата 29.5.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



xor-шифрование, как и большинство известных мне алгоритмов шифрования не имеет дела с текстом
они имеют дело только с последовательность чисел
поэтому алгоритму, обычно по барабану семантическая нагрузка символа
в более сложные алгоритмы встраивается учёт вероятностей появления того или иного символа, что позволяет затруднить статистические методы взлома
в ещё более сложных алгоритмах могут использоваться какие-нибудь более глубокие данные о символах
но xor - явно не тот случай
тут, ИМХО, проблема находится где-то между приёмом текста от пользователя и отправкой массива байт в алгоритм шифрования... 


--------------------
qqq
PM WWW   Вверх
mr.Anderson
Дата 29.5.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



хм... сама функция шифровки описана так:
Код

AnsiString XOR_Crypt(AnsiString InStr, AnsiString Key)
{
 AnsiString out="";

 for (int x=1;x<InStr.Length()+1;x++)
  out += (char)(InStr[x] ^ Key[x%Key.Length()+1]);

 return out;
}

А вызывается она вот таким макаром:
Код

Form1->Rezults->Text=XOR_Crypt(Form1->Temp->Text, Form2->XORCryptKey->Text);

Где Rezults - компонент класса TMemo, XOR_Crypt() - собственно функция шифровки, Temp - еще компонент класса TMemo, XORCryptkey - компонент TEdit, в который вводится ключ для расшифровки. 


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 29.5.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Да елки! Неужто никто в жизнь не шифровал этим алгоритмом символы переноса строки! 


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
maxim1000
Дата 29.5.2006, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



1. как проявляется "нешифрование" символов переноса строки
2. неплохо было бы посмотреть шифруемую строку, как последовательность кодов её символов 


--------------------
qqq
PM WWW   Вверх
mr.Anderson
Дата 29.5.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



секунду.... не понял... сейчас снова попробовал закодировать-расшифровать, почему-то получилось... правда, я там код слегка менял... мда. Ладно, прошу извинить за беспокойство, проблема решилась как-то сама собой...

Добавлено @ 19:16 
Нет, не решилась! Протестировал еще раз, пожестче. Оказалось, что символы переноса строки шифруются нормально! Не шифруется цифра 1 ! Вот что! То есть, я пробовал зашифровать вот такое:
Цитата

0987654321234

В итоге в файле получал кракозябры, как и надо. Расшифровываю, на выходе получаю следующее:
Цитата

098765432

Т.е. символы при шифровке урезаются до единицы. Почему так? То есть проблемой является только единица! 


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
sergejzr
Дата 29.5.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



У тебя там скорее всего трабла с '\0' тобишь с символом конца строки. Потому что ты работаешь с AnsiString и оператором '+'.
Перепиши функции на char*. 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
mr.Anderson
Дата 30.5.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Эммм.... не получилось... Переписал вот так:
Код

char XOR_Crypt(char *InStr, AnsiString Key)
{
 for (int x=1;x<InStr.Length()+1;x++)
  static char out[] += static_cast<char>((InStr[x] ^ Key[x%Key.Length()+1]));

 return out;
}


Может, где и наврал, но суть не в этом. В функцию, как я писал выше, передается два аргумента типа AnsiString, который нельзя преобразовать в char, как говорит компилер... 


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
maxim1000
Дата 30.5.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



Цитата(sim7 @  30.5.2006,  17:44 Найти цитируемый пост)
char XOR_Crypt(char *InStr, AnsiString Key)
{
 for (int x=1;x<InStr.Length()+1;x++)


не пойдёт... даже не скомпилируется...
нужно передавать длину строки

P.S.
Модератор: 
судя по всему, проблема не с алгоритмом, так что лучше перемещу это в Delphi... 


--------------------
qqq
PM WWW   Вверх
mr.Anderson
Дата 30.5.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



P.S. А вот в Delphi этому точно нечего делать. Мы вроде тут С++ разбираем. И, соответственно, Borland C++ Builder, а не Delphi/Kylix.

Не могу понять, как написать функцию... Похоже, придется смириться с ошибкой с единицей. 


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Artemon
Дата 30.5.2006, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



У меня была такая проблема с шифрованием методом XOR, решил я ёё следующим способом - перед шифровкой символы '\0' заменял на '\r\m'(или что-то похожее) и все заработало как часы. 


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
maxim1000
Дата 30.5.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



Цитата(sim7 @  30.5.2006,  18:44 Найти цитируемый пост)
А вот в Delphi этому точно нечего делать

на автомате написал Delphi
зато перенёс правильно smile 


--------------------
qqq
PM WWW   Вверх
Partizan
Дата 30.5.2006, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



Вот код xor шифрования, который я использовал для шифрования паролей пользователей многопользовательской игры в морской бой, защиты никакой канеш, но от "дурака" вполне приемлемо)))
работает без накладок) 
Код

AnsiString __fastcall TAutorizeForm::Encoding(AnsiString str)
{AnsiString out,pass="!";
for (int x=1;x<str.Length()+1;x++)
        {
        out += (char)(str[x] ^ pass[x%pass.Length()+1]);
        }
return out;

}
 


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Romikgy
Дата 31.5.2006, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Мож уже и не надо , но
Код

AnsiString XOR_Crypt(AnsiString InStr, AnsiString Key)
{ 
AnsiString out=InStr;
char *cho;
cho=new char[InStr.Length()];
strcpy(chp,InStr.c_str());
//////////////////////////
 for (int x=0;x<InStr.Length()-1;x++) 
 cho[x]= (cho[x] ^ Key[x%Key.Length()]);
//////////////////////////
out=AnsiString(cho);
delete(cho);
 return out;
}
 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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