Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 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   Вверх
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   Вверх
NYX
Дата 20.1.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Очередное сори за подъем старой темы. Вообще XOR шифрование самое убогое smile его мона взять тока за основу. При шифровании методом XOR, надо учесть не один нюанс:
1 - строка A должна быть того же размера что и строка B
2 - символ Аn != Bn (иначе потеря данных)

Лично я как то пытался сделать шифрование по XOR методу, но исключительно шифрование ограничивалось массивами суммой которых являлось одно число и сортировка массивов была
разной. 
То есть например есть массив N элементы которого равны N1 = N0+1
Затем производил сортировку типа: x = N[i]; N[N[x]] += z; N[N[x]] -= z; (примерно)
После чего строки мона было XOR'ить smile

Но самый лучший метод который мне понравился, это когда заранее определенный массив состоящий из N1 = N0+1 изначально, сортировался по маске значений пароля, затем входящий поток 
шифровался простым return Table[InValue]; Это на мой взгляд и быстро и весьма широкие границы воображения открывает smile

Это сообщение отредактировал(а) NYX - 20.1.2010, 14:44
--------------------
'long long long' is too long for GC
PM   Вверх
Жанерке
Дата 24.10.2011, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



объясните плиз xor шифрование ааааа
вообще как шифровать слово

Добавлено через 1 минуту и 23 секунды
procedure TForm1.Button2Click(Sender: TObject);
   var FName: string;
begin

      if OpenDialog1.Execute then
       begin
        FName := OpenDialog1.FileName;
        Memo1.Lines.LoadFromFile(FName);
       end;
end;

procedure TForm1.Button1Click(Sender: TObject);
  var j: integer;
  key, text, longkey, result: string;
  i: integer;
  toto, c: char;
begin


        if edit1.Text='' then  Application.MessageBox('Вкажіть код!', ä!','Помилка!')
         else
         begin
              if Memo1.Lines.Count=0 then  Application.MessageBox('Відсутній код!','Помилка!!!')
                 else
                 begin

                   key:=Edit1.Text;
                   for j:=0 to Memo1.Lines.Count do
                    begin

                      text:=Memo1.Lines.Strings[j];

                      for i := 0 to (length(text) div length(key)) do
                        longkey := longkey + key;
                        for i := 1 to length(text) do
                        begin
                          toto := chr((ord(text[i]) xor ord(longkey[i]))); // XOR алгоритм
                          result := result + toto;
                        end;
                      Memo1.Lines.Strings[j]:=result;
                      end;
                   //zapuskaesh codirovanie
                 end;
         end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var FName: string;
begin
if SaveDialog1.Execute then
       begin
        FName := SaveDialog1.FileName;
        Memo1.Lines.savetofile(FName);
       end;

end;

end.
че за программа
PM MAIL   Вверх
cutwater
Дата 24.10.2011, 16:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Жанерке @  24.10.2011,  12:47 Найти цитируемый пост)
объясните плиз xor шифрование ааааа
вообще как шифровать слово


Прежде объясните каким простите концом тот ваш код на Delphi (к тому же не оформленный как код) относится к С++

По теме
http://lmgtfy.com/?q=xor+%D1%88%D0%B8%D1%8...%BD%D0%B8%D0%B5




--------------------
user posted image
PM MAIL   Вверх
SVN74
Дата 24.10.2011, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Простейший  алгоритм кодирования…
Код

void SimpleCodeByKey(char *Buff, unsigned int Size, char* KeyW)
{
    int Sz = strlen(KeyW);
    for(unsigned int i=0;i<Size;i++)
    Buff[i] = char(Buff[i] ^ KeyW[i % Sz]);
}


Пример  использования с проверкой переноса строк:
Код

// Создаем буфер и копируем в него наш текст из Memo1
    int MyBuffSize = Memo1->Text.Length()+1;
    char *MyBuffer = new char[MyBuffSize];
    strcpy(MyBuffer, Memo1->Text.c_str());

    // Кодируем наш буфер
    SimpleCodeByKey(MyBuffer, MyBuffSize, "Наш ключ = Ася");

    //Смотрим на наш перевернутый буфер
    Memo1->Lines->Add("==== После кодирования ====");
    Memo1->Lines->Add(AnsiString(MyBuffer));

    // Раскодируем наш буфер
    SimpleCodeByKey(MyBuffer, MyBuffSize, "Наш ключ = Ася");

    //Снова смотрим на наш перевернутый буфер
    Memo1->Lines->Add("==== После раскодирования ====");
    Memo1->Lines->Add(AnsiString(MyBuffer));


PM MAIL WWW   Вверх
koroplysov
Дата 3.11.2011, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Возьмите наш ГОСТ 28147-89 и шифруйте на здоровье. В режиме гаммирования получите текст той же длинны. И надежно и просто. Операции там примитивные:побитовое исключающее или, сложение по модулю 2 в степени 32(просто не учитывай перенос при сложении беззнаковых 32-битных), сдвиг в лево на 11 бит и таблица замен. Пишится легко как на C++ так и на ассемблере(вставка для билдера). Сейчас с собой нет кода, но если нужно, то с удовольствием поделюсь. Есть и другие алгоритмы.
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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