algorytm.org

Implementacja w Delphi/Pascal



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Algorytm XOR + liczby pseudolosowe - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Waldemar Sradomski, 02 grudnia 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

xor_pseudo_d/WS_XOR.pas:
//Algorytm szyfrowania XOR z uzyciem liczb pseudolosowych
//(c)2007 by Waldemar Sradomski
//www.algorytm.org

unit WS_XOR;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CRC;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    EKlucz: TEdit;
    Label2: TLabel;
    LKlucznr: TLabel;
    MTekst: TMemo;
    Label3: TLabel;
    Label4: TLabel;
    MTextSzyfr: TMemo;
    ButtonSzyfruj: TButton;
    Memo1: TMemo;
    BZamien: TButton;
    procedure EKluczChange(Sender: TObject);
    procedure ButtonSzyfrujClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BZamienClick(Sender: TObject);
  private
    KluczNr : LongInt;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{DEFINE Win32}

procedure szyfruj(klucz : LongInt; Text : TStrings; Wynik : TStrings);
var i : LongInt;
    w : String;
begin
 RandSeed := Klucz;
 SetLength(w, length(Text.Text));
 // -2 dlatego że na końcu jest zawsze #13#10
 for i:= 1 to length(Text.Text) do
     w[i] := Char(Byte(Text.text[i]) xor Byte(random(255)));
 wynik.Clear;
 wynik.SetText(Pchar(w))
end;

procedure TForm1.EKluczChange(Sender: TObject);
var i : integer;
    p : Pointer;
begin
 i := length(EKlucz.Text);
 p :=  PChar(EKlucz.Text);
 KluczNR := UpdateCrc32($FFFFFFFF, p^ , i);

 LKlucznr.Caption := IntToStr(KluczNR);

 szyfruj(KluczNR,MTekst.Lines,MTextSzyfr.Lines);
end;

procedure TForm1.ButtonSzyfrujClick(Sender: TObject);
begin
 szyfruj(KluczNR,MTekst.Lines,MTextSzyfr.Lines);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 EKluczChange(nil)
end;

procedure TForm1.BZamienClick(Sender: TObject);
begin
  MTekst.Text := MTextSzyfr.Text;
end;

end.
Dodaj komentarz