Поиск:

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


Опытный
**


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

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



Romikgy, 
Код

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;
}

ничем по сути не отличается от 

Код

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;
}

Прав был  sergej.z про \0,  решение предложил уже почти готовое  Artemon : 
Цитата

символы '\0' заменял на '\r\m'

А с char или String ты работаешь не суть важно. Лучше делать универсально, а универсально(чтобы везде не париться с char*) - это как  Artemon предлагал. 


--------------------
я не гольфист - я хоккеист
PM MAIL   Вверх
sergejzr
Дата 31.5.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(takedo @  31.5.2006,  07:35 Найти цитируемый пост)
А с char или String ты работаешь не суть важно.

Вообще, информация в закодированном виде уже не String, а ByteArray или попросту Blob. Я бы не стал из него AnsiString делать.  


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


iOS Lead Developer
****


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

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



так... вопрос: в качестве ключа может быть передан только один символ? Или несколько? 


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

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


Эксперт
****


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

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



учитывая что ксориш ты один символ -- ключ длиннее байта -- изилишен. 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
sergejzr
Дата 31.5.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



_hunter, сорри, ты не прав. Здесь как раз защищённость зависит от длинны ключа. 
Ключ в 1 байт означает 256 проверок и открытый текст у тебя.
Ключ длинной в сам текст означает, что подобрать его можно будет только перебором. 


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


Эксперт
****


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

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



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

если увеличивать длину ключа, нужно и размер одного элемента увеличивать 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
sergejzr
Дата 31.5.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(_hunter @  31.5.2006,  15:36 Найти цитируемый пост)
и как ты собираешся записать результат шифрования ключем длинной в текст в один байт?

Почему?
Длина результата шифрования = длине исходного текста.  


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


iOS Lead Developer
****


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

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



Вот, оказывается, в чем проблема. По моему коду не шифруются те символы, которые содержатся в ключе! 


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

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


Un salsero
Group Icon


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

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



Цитата(sim7 @  31.5.2006,  16:05 Найти цитируемый пост)
Вот, оказывается, в чем проблема. По моему коду не шифруются те символы, которые содержатся в ключе!  

Блин, конечно нет, ведь туда 0 записывается, что для AnsiString означает конец строки. Я же говорю, пиши в char* и запоминай длину! 


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


Эксперт
****


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

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



Цитата(sergej.z @  31.5.2006,  17:45 Найти цитируемый пост)
Длина результата шифрования = длине исходного текста. 

ты, чтоли, последовательно ксорить предлагаеш?
 -- тоже вариант... 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mr.Anderson
Дата 31.5.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



но как ее решить-то? 


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

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


Un salsero
Group Icon


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

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



Писал без компилера так что может чтото не работать

Код

AnsiString XOR_Crypt(AnsiString Key, char* InStr, char *result, int length)
{ 
//////////////////////////
 for (int x=0;x<length;x++) 
 result[x]= (InStr[x] ^ Key[x%Key.Length()]);
//////////////////////////
}

int main()
{

AnsiString InStr="my secret message";
AnsiString Key="myKey";

char* result=new char[InStr.Length()];
XOR_Crypt(Key, InStr.c_str(),result, InStr.Length());

//result теперь - закоденная строка

XOR_Crypt(Key,result, result, InStr.Length());
AnsiString out=AnsiString(cho);

//out теперь исходная строка

}
 


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


Опытный
**


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

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



Код

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;
}

Вот в этом коде, да и в других вариантох функции XOR-шифрования есть такая конструкция Key[x%Key.Length()+1].
Допустим вызываем функцию XOR_Crypt("abcdefgh","12345").
Идем по циклу. При x=4 получится что индекс строки Key будет равен 9, то есть Key[9], но ведь в Key всего 5 символов. Ошибка?
PM MAIL   Вверх
xvr
Дата 13.1.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Нитонисе @ 12.1.2010,  20:11)
Вот в этом коде, да и в других вариантох функции XOR-шифрования есть такая конструкция Key[x%Key.Length()+1].
Допустим вызываем функцию XOR_Crypt("abcdefgh","12345").
Идем по циклу. При x=4 получится что индекс строки Key будет равен 9, 

Это с какого перепугу он будет 9?  smile 4 % 5 + 1  будет 5
Цитата

Ошибка?
Угу, операция '%' - это остаток от деления, а не что то другое  smile 

PM MAIL   Вверх
Нитонисе
Дата 13.1.2010, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



точно) я почему-то подумал, что оператор % - это мы получаем дробную часть)

Это сообщение отредактировал(а) Нитонисе - 13.1.2010, 13:38
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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