Легко и просто.

Статьи » Защита » Враг не прорвется! » Легко и просто.

    Вот наконец-то мы добрались до того момента, когда в ход вступают не слова, а реальные примеры и реальные коды. Ниже будет приведен код программы, написанной мною для того, чтобы дать общее понятие о криптографии, текст снабжен исчерпывающими комментариями, так что понять думаю, будет очень легко и просто.

    Итак приступим.

unit main;

interface

uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Buttons, ShellAPI;

const  key = '2147483640'; // Наш ключик ?

  crname = 'crypt.fln'; // Шифрованый файлик  dcrname = 'decrypt.fln'; // Востановленный (расшифрованый) файлик

type  TForm1 = class(TForm)  GroupBox1: TGroupBox;  Button2: TButton;  OpenDialog1: TOpenDialog;  Button3: TButton;  BitBtn1: TBitBtn;  Edit1: TEdit;  StaticText1: TStaticText;  CheckBox1: TCheckBox;  Label1: TLabel;  GroupBox2: TGroupBox;  Label2: TLabel;  Label3: TLabel;  Label4: TLabel;  Label5: TLabel;  Label6: TLabel;  Label7: TLabel;  Label8: TLabel;  Label9: TLabel;  Label11: TLabel;  Label10: TLabel;  Label12: TLabel;  Button1: TButton;  procedure Button3Click(Sender: TObject);  procedure Button2Click(Sender: TObject);  procedure BitBtn1Click(Sender: TObject);  procedure Label11Click(Sender: TObject);  procedure Label10Click(Sender: TObject);  procedure Label12Click(Sender: TObject);privatepublic  { Public declarations }end;

var  Form1: TForm1;

implementation

{$R *.dfm}

procedure Crypt (FileName : TFileName); //Процедура шифрованияvar  f, f1 : File of Char; // Определяем переменные, в которых будут имена исходного и                                               // зашифрованного файла  j : Integer;  i, i2 : Char;begin  AssignFile (f, FileName); // Сопоставляем имя исходного файла с переменной f   AssignFile (f1, crname); // и имя итогового файла с переменной f1 типов Char  try  {$I-}    Reset (f); // Пробуем открыть файл;    Rewrite (f1); // и создать макет итогового файла  {$I+}  finally // В случае успеха    While not Eof(f) do // Открываем цикл чтения файла побитно     begin      Read (f, i); // Считываем текущий символ      j := Ord(i) xor StrToInt(key); // Берем ASCII код символа и проводим над ним и                                                                     // ключевым словом операцию «исключающее ИЛИ                                                                     // (XOR)»      i2 := Chr(j); // Полученный результат преобразуем в символ      Write (f1, i2); // и записываем в итоговый файл.    end;    CloseFile (f); // Закрываем исходный    CloseFile (f1); // и итоговый файлы.    Form1.Label1.Caption := 'Обработан';    If Form1.CheckBox1.Checked <> True then DeleteFile (FileName);  end;end;procedure Decrypt (FileName : TFileName); //Процедура дешифровки файлаvar  f, f1 : File of Char; // Опять объявляем переменные  j : Integer;  i, i2 : Char;begin  AssignFile (f, FileName); // Ассоциируем исходный (зашифрованный)  AssignFile (f1, dcrname); // и итоговый (расшифрованный) файлы  try    {$I-}    Reset (f); // Пробуем открыть    Rewrite (f1); // Продуем создать    {$I+}  finally //Если корректно, то    While not Eof(f) do // Открываем цикл чтения/записи    begin      Read (f, i); //Читаем символ      i2 := Chr(Ord(i) xor StrToInt(key)); // Восстанавливаем символ      Write (f1, i2); // и записываем его в выходной файл.    end;    CloseFile (f); // Закрываем исходный     CloseFile (f1); // и итоговый (восстановленный) файлы  end;end;procedure TForm1.Button3Click(Sender: TObject);begin  Close;end;

procedure TForm1.Button2Click(Sender: TObject);begin  Crypt (OpenDialog1.FileName);end;

procedure TForm1.BitBtn1Click(Sender: TObject);begin  OpenDialog1.Execute;  Edit1.Text := OpenDialog1.FileName;  Label1.Caption := 'Новый';  Button2.Enabled := True;end;

end.

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com