Quix Quix Quix Quix

CodeZone   Projektowanie stron PHP WebPage Editor Forum Kontakt

Aktualności

Artykuły

Kursy

Download

Literatura

Linki

Pomoc

Login:

Hasło:

Literatura

Nowości

Aktualizacja 27-01-2007

Rzutowanie z 3d na płaszczyznę 27-01-2007

Obrót w 2d 27-01-2007

Szyfrowanie hasłem 27-01-2007

Wykresy funkcji 27-01-2007

Zamiana obrazków 19-08-2006

Lista 03-08-2006

Hello World 2.0 03-08-2006

Automatyczne wysyłanie formularza 03-08-2006

Animowanie wyświetlania tekstu 03-08-2006

PHP WebPage Editor

Najnowsza wersja: 3.2
Aktualizacja: 27.01.2007

Ściągnij

Ostatnio na forum

php.exe 18-02-2010

Kilka propozycji 24-04-2009

Konstruktor i zwracanie wartości 22-03-2009

formularz 29-06-2008

formularz 29-06-2008

Premiera PHP WebPage Editora 3.0 20-08-2007

utf-8 22-06-2007

Mapa odsyłaczy 20-06-2007

Możliwość zapisywania przez FTP 20-06-2007

problem 25-04-2007

->CodeZone->Artykuły->Algorytmy->Szyfrowanie hasłem

Szyfrowanie hasłem

27-01-2007

W tym artykule chciałbym omówić prosty algorytm służący do szyfrowania tekstu hasłem. Jest on wersją algorytmu stosowanego w czasie drugiej wojny światowej przez Niemców rozszerzoną o całą tablicę ASCII.
Szyfr ten przyporządkowuje kolejne litery hasła do kolejnych liter tekstu, który ma zostać zakodowany lub odkodowany. Hasło z reguły jest krótsze od tekstu, dlatego po ostatnim znaku hasła następuje znowu pierwszy i tak aż do przetworzenia całego tekstu. Mając dane odpowiadające sobie dwie litery dokonywana jest na nich operacja – najprościej jest po prostu wykonać XOR lub zwykłe dodawanie. My rozważymy przypadek dodawania. Należy zwrócić tutaj uwagę na dwa fakty – po pierwsze dodanie kodów dwóch znaków może dać wynik większy od 255 trzeba więc będzie na tym wyniku przeprowadzić operację modulo aby uzyskać wynik dający kod ASCII. Ponadto powinniśmy zawęzić przedział znaków do [32,255], gdyż znaki o kodach mniejszych od 32 należą do znaków sterujących i mogą powodować niepowołane efekty. Z tego wynika że uzyskanie znaku wynikowego wymaga odjęcia 32 od kodów znaków tekstu oraz hasła, dokonania operacji mod 224 (tyle zostaje po usunięciu znaków sterujących) i dodania 32 do wyniku aby w tekście zaszyfrowanym uzyskać kod znaku nadającego się do wyświetlenia. Te operacje realizuje poniższa funkcja:

żródłem tekstu jawnego jest memo1, hasło znajduje się w polu edit1, natomiast zaszyfrowany tekst będzie się znajdywał w memo2.

procedure TForm1.Button1Click(Sender: TObject);
  var i:integer;
  s:string;
  z,c:char;
begin
s:='';
for i:=1 to length(memo1.text) do begin
  z:=memo1.text[ i ] ;
  c:=edit1.text[(i-1) mod length(edit1.text) +1]; //zapewniamy “zapętlenie” hasła
  z:=chr((ord(z)-32+ord(c)-32) mod 224 + 32); // szyfrujemy
  s:=s+z;
end;
memo2.text:=s;
end;


Analogicznie przebiega proces dekodowania:
procedure TForm1.Button2Click(Sender: TObject);
  var i:integer;
  s:string;
  z,c:char;

begin
s:='';
for i:=1 to length(memo2.text) do begin
  z:=memo2.text[ i ];
  c:=edit1.text[(i-1) mod length(edit1.text) +1];
  z:=chr((ord(z)-ord(c))mod 224 +32 );
  s:=s+z;
end;
memo1.text:=s;
end;

Komentarze

cwypugha bxungdi

09:13 25-01-2009

fdzcuqnwo gxkb eyqowfk wsknxegl csrnxl wkgof svkdrgy

Powered by Quix CMS

0.0023 0.0080 0.0083 0.0117 0.0120 0.0214