Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2010, 19:58   #11
Devostator
Пользователь
 
Регистрация: 05.02.2010
Сообщений: 45
По умолчанию

Вот полный код программы:
Код:
function TForm1.XORString(str:String):string;
var e:integer;
    XORKey:byte;
begin
 result:='';
 XORKey:=200;
    //********* FOR ******************
    for e :=1  to length(str) do
    begin
      result:=result+chr(byte(str[e]) xor XORKey);
    end;
    //******* END FOR ****************{}
end;

 procedure TForm1.ShifrovatClick(Sender: TObject);
 var
 f:TStringList;
 i:integer;
begin
f:=TStringList.Create();
f.LoadFromFile('test.txt');     //заносим текст в переменную

for I := 0 to f.Count - 1 do
begin
  f.Strings[i]:=XORString(f.Strings[i]); //построчно кодируем
end;

f.SaveToFile('test_code.txt');
end;

procedure TForm1.btnClick(Sender: TObject);
var
 f: TStringList;
 i:integer;
begin
f:=TStringList.Create();

f.LoadFromFile('test_code.txt');
for I := 0 to f.Count - 1 do
begin
  f.Strings[i]:=XORString(f.Strings[i]); //построчно декодируем
end;

f.SaveToFile('test_decode.txt');
end;
К примеру вот исходный текст:
Привет всем!
Как дела?
Че делаете?


Вот зашифрованный текст:
???uy?eu?yoe
Oooeuyoo?
iyeuyooy?y?


А вот расшифрованный текст:
????±?*??±§*
?§§*?±§§?
?±*?±§§±?±?

Последний раз редактировалось Devostator; 28.09.2010 в 20:18.
Devostator вне форума Ответить с цитированием
Старый 28.09.2010, 22:36   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Не подтверждаю!!
Всё работает как часы! Выложить откомпилированный проект?!
Выложил Ваш же проект. Всё работает!

Другое дело, что Вы делаете грубейшую ошибку в стойкости защиты - используя в качестве ключа один и тот же байт.
Как минимум для этого надо использовать строчку и подлинее.
Да и неплохо бы завести указатель, чтобы каждая строчка не начиналась XORится с началом ключевой строки.
Ну, как максимум, добавлять в шифрованный файл случайный мусор в каждую строчку + завести контрольную сумму. Это РЕЗКО усложнит попытки анализа и подбора ключа. Пример нужен?
Вложения
Тип файла: rar XORExample.rar (127.6 Кб, 26 просмотров)

Последний раз редактировалось Serge_Bliznykov; 28.09.2010 в 22:39.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.09.2010, 06:40   #13
Devostator
Пользователь
 
Регистрация: 05.02.2010
Сообщений: 45
По умолчанию

Хм.......... а у меня не работает Ваш пример. Может проблема в том, что я использую Delphi 2010, а Вы Delphi 7?

Кодировку текста менял - не помогает.

Последний раз редактировалось Devostator; 29.09.2010 в 06:46.
Devostator вне форума Ответить с цитированием
Старый 29.09.2010, 08:06   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может проблема в том, что я использую Delphi 2010, а Вы Delphi 7?
Совершенно верно )
2010ка чуть по другому со строками работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2010, 08:15   #15
Devostator
Пользователь
 
Регистрация: 05.02.2010
Сообщений: 45
По умолчанию

И как же она работает? Что мне теперь делать, чтобы текст расшифровать?
Devostator вне форума Ответить с цитированием
Старый 29.09.2010, 10:56   #16
Devostator
Пользователь
 
Регистрация: 05.02.2010
Сообщений: 45
По умолчанию

Подскажите пожалуйста! I need help. =) Неужели шифрование XOR не подходит для Delphi 2010?
Devostator вне форума Ответить с цитированием
Старый 29.09.2010, 11:02   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

подходит, подходит.. надо только правильно работу со строчками написать!

Delphi 2010 по умолчанию работает со строками UniCode (это значит, что каждый символ хранится в двух байтах). Думаю, что проблема связана именно с этим.
Варианты решения:
или перейти на другую версию Delphi (хотя бы Protable взять)
или попытаться использовать AnsiString (ну и TEncoding - при чтении/записи строк)
или ...... (стопудово есть ещё варианты )
На крайний случай, я 100% уверен, что можно банально работать с файлом, как с бинарным (читать в буфер и обрабатывать буфер). Ничего сложного! Но это,конечно, только если со строчками не удастся разобраться!

p.s. а запакуйте, пожалуйста, исходный файл, зашифрованный файл и файл после расшифровки. Любопытно посмотреть...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.09.2010, 11:33   #18
Devostator
Пользователь
 
Регистрация: 05.02.2010
Сообщений: 45
По умолчанию

Вот 3 текстовых файла:
http://depositfiles.com/files/burhgi1iu
Devostator вне форума Ответить с цитированием
Старый 29.09.2010, 12:38   #19
Devostator
Пользователь
 
Регистрация: 05.02.2010
Сообщений: 45
По умолчанию

В Turbo Delphi Portable все работает! Спасибо за подсказку.
TEncoding не осилил.
Может кто-нибудь поможет бедному студенту в программе под Delphi 2010 с использованием TEncoding?
Stilet и Serge_Bliznykov, СПАСИБО ВАМ БОЛЬШОЕ!
Devostator вне форума Ответить с цитированием
Старый 29.09.2010, 12:59   #20
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Ну и мешанина в этих файлах.. Где-то получилось xor $b4, где-то xor $d4, а где-то вообще xor $04. Какая-то логика в этом явно есть. Думаю, что ошибка возникает из-за шибко умной функции chr().
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шифрование текста Sparky Помощь студентам 2 01.06.2010 18:24
Шифрование текста(Assembler) Anutka2611 Помощь студентам 0 25.04.2010 21:41
Шифрование текста XOR'ом nec117 Общие вопросы .NET 8 22.12.2009 17:53
Шифрование текста XOR'ом nec117 Общие вопросы C/C++ 6 05.12.2009 15:21
Шифрование текста SoundMan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 15.08.2008 22:39