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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2011, 16:01   #1
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию Шифровка и Дешифровка

Всем доброго времени суток........делаю шифроку текста вроде все правильно


Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if (Memo2.Text<>'')then
  begin
   AssignFile(st_File,Edit13.Text);
   Rewrite(st_File);
    //////////////////////////////////////////////////Шифровка
    for i:= 0 to memo2.Lines.Count do begin
  s:= memo2.Lines.Strings[i];
  for j := 1 to Ord(s[0]) do c[j] := 23 xor c[j];
  /////////////////////////////////////////////////////////////
   writeln(st_File,s);
   end;
   CloseFile(st_File);
   ShowMessage('OK');
  end

end;

Не получается дешифровать текст в чем проблема скажите плиииз

Код:
procedure TForm1.Button4Click(Sender: TObject);
var n:integer;
f:textfile;
 buf,fv:string;
begin
fv:=opendialog1.FileName;
with opendialog1 do begin
 assignfile(f,fv);
Reset(f);
for i:= 0 to n do  readln(f, buf);
readln(f, buf);
for k := 1 to Length(buf) do buf[k] := Char(23 xor Ord(c[k]));
memo4.Text  := buf;
 end;
//memo4.Lines.LoadFromFile(Opendialog1.FileName);
end;
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...

Последний раз редактировалось Claster; 26.03.2011 в 16:27.
Claster вне форума Ответить с цитированием
Старый 26.03.2011, 23:44   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

на редкость "неопрятный" код. Да и ошибок хватает.
1) цикл по строчкам мемо1 нельзя крутить до Count
нужно до Count-1
Код:
for i:= 0 to memo2.Lines.Count-1
2) при XOR символа с кодом 23 может получится НЕПЕЧАТНЫЙ символ. С чего это Вы решили, что текстовый файл подойдёт для записи/чтения зашифрованных данных?!

ну и ещё то, что бросилось в глаза: вместо Ord(s[0]) гораздо правильнее использовать Length(s)

p.s. процедуру дешифрации я даже не смотрел, хватило процедуры шифрации...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.03.2011, 00:42   #3
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

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

над шифровкой по шаманил спасибо вроде все нормально шифрует:

Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if (Memo2.Text<>'')then
  begin
   AssignFile(st_File,Edit13.Text);
   Rewrite(st_File);
    //////////////////////////////////////////////////Шифровка
    for i:= 0 to memo2.Lines.Count-1 do begin
  s:= memo2.Lines.Strings[i];
  for j := 1 to Ord(s[0]) do s[j] := Char(23 xor Ord(s[j]));
  /////////////////////////////////////////////////////////////
   writeln(st_File,s);
   end;
   CloseFile(st_File);
   ShowMessage('ОК');
  end

а вот с дешифровкой мне бы очень помогла ваша помощь, ошибок не выдает и в memo не добавляет (((

Код:
procedure TForm1.Button4Click(Sender: TObject);
var n:integer;
f:textfile;
 buf,fv:string;
begin
fv:=opendialog1.FileName;
n:=-1;
if opendialog1.Execute then
 assignfile(f,fv);
Reset(f);
for i:= 0 to n do  readln(f, buf);
//readln(f, buf);
for k := 1 to Length(buf) do buf[k] := Char(23 xor Ord(s[k]));
memo4.Lines.Add(buf);
 end;
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Старый 27.03.2011, 03:39   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Не, Вы всё таки не хотите меня слушать...
Поймите, как только в строке появляются НЕПЕЧАТНЫЕ символы, то для записи и, особенно, для ЧТЕНИЯ текстовые файлы перестают подходить. Потому что текстовый файл - это файл содержащий текст. Бинарный файл (в общем случае) текстовым НЕ ЯВЛЯЕТСЯ!
Поэтому для работы с Вашим файлом используйте TFileStream.

почитайте тему вот эту - StringList(Delphi)
там, в этом сообщении я привёл пример шифрующий и расшифровающий Memo. Рекомендую воспользоваться этим кодом (можете ключевую фразу MKey заменить на свою. Желательно такую, чтобы она состояла из множества разнообразных символов и не бросалась в глаза при просмотре EXEшника).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.03.2011, 12:30   #5
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию

ОК спасибо большое буду разбираться
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...
Claster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дешифровка нескольких переменных(delphi) CAMOBAP Помощь студентам 1 19.01.2011 02:20
GnuPG decrypt - дешифровка файла Veroonya Общие вопросы по Java, Java SE, Kotlin 0 18.06.2010 10:30
шифровка и дешифровка текста паролем s2dentishe Помощь студентам 3 21.12.2009 09:41
Дешифровка файла в Делфи Аретмий Помощь студентам 3 19.11.2009 21:55
Дешифровка zvyagin1 Фриланс 3 02.12.2008 20:40