Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Шифрование текстовых файлов


Автор: Drovosek 10.3.2006, 12:29
Допустим, есть edit1, а в нем текст.
Есть bitbtn1. Нажимаем на него.
Text в edit нужно зашифровать.
Помогите пожалуйста, заранее благодарен.
Как далее сохранить текст в файл я знаю.
smile


{Все гениальное просто и рационально}

Автор: Guedda 10.3.2006, 12:35
Этот вопрос неоднократно обсуждался.
Но вот тебе ответ:
Код

procedure TForm1.BitBtnClick(Sender : TObject);
var
  s : string;
  e : string;
  i : Integer;
begin
  s := Edit1.Text;
  SetLength(e, length(s));
  for i := 1 to length(s) do begin
    e[i] := chr(ord(s[i])+12); //тут можешь поставить любое число
  end;
  ShowMessage(e);
end;

В переменной e и будет твой зашированный текст.
Чтобы рассшифровать, используй ту же самую конструкцию, только отнимай то число, которое прибавил.

Автор: _hunter 10.3.2006, 12:38
и что тебе помогать?
+ не стесняемся по форуму искать:
http://forum.vingrad.ru/index.php?showtopic=80273
http://forum.vingrad.ru/index.php?showtopic=43216
http://forum.vingrad.ru/index.php?showtopic=50856
http://forum.vingrad.ru/index.php?showtopic=49022

Автор: Drovosek 10.3.2006, 13:34
А как дешифровать? smile

Автор: Guedda 10.3.2006, 13:39
Так:
Код

procedure TForm1.BitBtn2Click(Sender : TObject);
var
  s : string;
  e : string;
  i : Integer;
begin
  //s - это твоя строка шифрованная
  SetLength(e, length(s));
  for i := 1 to length(s) do begin
    e[i] := chr(ord(s[i])-12); //поставь минус перед тем числом. И все ОК.
  end;
  ShowMessage(e);
end;

Автор: Alexeis 10.3.2006, 13:43
Guedda, способ, конечно, простой и изящный, однако
для серьезных целей не годится(Слишком быстро взламывается).
Хотя чайника напугает сильно smile

Автор: Guedda 10.3.2006, 13:49
Я написал простейший вариант. У меня есть технология шифрования. Но это, я думаю, не уместно. Попросили же просто шифр \ дешифр. Понравилось же smile

Автор: Alexeis 10.3.2006, 14:00
Guedda, полностью согласен. Я просто для справки указал чтоб Drovosek, не возлагал слишкошком больших надежд на эту методику.

Автор: Drovosek 10.3.2006, 14:55
Мне все, конечно, очень понравилось и огромное спасибо Guedda.
Но все же масчтабы и серьезность моего проекта, почти законченного: осталось шифрование,
требуют более серьезных методов.
А так как необходимость использования неплохой системы защиты
информации возникла впервые, прошу помочь мне в освоении азов:

Guedda, если тебя не затруднит, зацени что-нибудь по-существеннее.
Заранее огромное спасибо!


И, кстати, alexeis1, ничуть не напугало.

Автор: Alexeis 10.3.2006, 15:14
Напугать должна та таробаршина которая получается после шифрования вместо нормальных слов.

Я в шифровании тоже профан но могу показать небольшую модификацию
Код

var
  s: string;

procedure Code(var text: string; password: string;
  decode: boolean);
var
  i, PasswordLength: integer;
  sign: shortint;
begin
  PasswordLength := length(password);
  if PasswordLength = 0 then Exit;
  if decode
    then sign := -1
    else sign := 1;
  for i := 1 to Length(text) do
    text[i] := chr(ord(text[i]) + sign *
      ord(password[i mod PasswordLength + 1]));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  s := Memo1.Text;
  code(s, Edit1.Text, false);
  Memo1.Text := s;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  code(s, Edit1.Text, true);
  Memo1.Text := s;
end;





Если ключ будет символов 15 то взломать будет трудновато.
Но гарантий надежности дать не могу. Пусть скажет кто по умнее.

Автор: Snowy 10.3.2006, 15:15
http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&section=774

Автор: Drovosek 10.3.2006, 15:22
Премного благодарен Snowy и alexis1.

Автор: Drovosek 10.3.2006, 16:11
А как вам, господа, вот ЭТО:
:-)
http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&section=774

Автор: Snowy 10.3.2006, 16:46
Где-то я этот линк уже видел...
Наверное парой постов выше ;)

Автор: Drovosek 11.3.2006, 14:28
Я зашел туда, а потом в TEA, скопировал ссылку и вот...

В общем всем спасибо. Вопрос решен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)