A dlaczego tak na to xorowanie się wszyscy uprali? Przecież to strasznie prymitywny sposób szyfrowania. Nie ma większych problemów, żeby je złamać.
Ja już wolę stosować inne proste szyfry (np. przestawieniowe). Mam większą kontrolę nad tekstem jaki wychodzi.
I pamiętajcie: najtrudniej jest znaleźć to, co jest na widoku :)
Możesz podać jakię przykład jak zakodować treść edita. Np poprzestawaić znaki. Albo jak wygenerować klucz na podstawie wpisanego tekstu
Szyfr Cezara:
var
i: Integer;
Tekst: string;
begin
Tekst := '';
for i := 1 to Length(Edit1.Text) do
begin
Tekst := Tekst + Chr(Ord(Edit1.Text[i])+3);
end;
Edit1.Text := Tekst;
end;
Rot13 (mniej więcej):
var
i, Znak: Integer;
Tekst: string;
begin
Tekst := '';
Edit1.Text := UpperCase(Edit1.Text);
for i := 1 to Length(Edit1.Text) do
begin
Znak := Ord(Edit1.Text[i]) - 65;
Znak := (Znak + 13) mod 26 + 65;
Tekst := Tekst + Chr(Znak);
end;
Edit1.Text := Tekst;
end;
I jeszcze wiele innych. Moim zdaniem najciekawszym szyfrem (niestety nie pamiętam nazwy), był taki ciekawy szyfr wymyślony w XVIII w. Teoretycznie jest niemożliwy do złamania (zależnie od długości klucza).
W Edit1 jest tekst do zaszyfrowania, a w Edit2 do rozszyfrowania.
Szyfrowanie:
var
i, j: Integer;
Tekst: string;
begin
Tekst := '';
j := 0;
for i := 1 to Length(Edit1.Text) do
begin
Inc(j);
if j > Length(Edit2.Text) then
j := 1;
Tekst := Tekst + Chr(Ord(Edit1.Text[i])+Ord(Edit2.Text[j]));
end;
Edit1.Text := Tekst;
end;
Deszyfracja:
var
i, j: Integer;
Tekst: string;
begin
Tekst := '';
j := 0;
for i := 1 to Length(Edit1.Text) do
begin
Inc(j);
if j > Length(Edit2.Text) then
j := 1;
Tekst := Tekst + Chr(Ord(Edit1.Text[i])-Ord(Edit2.Text[j]));
end;
Edit1.Text := Tekst;
end;
Wydaje mi się, że jest artykuł o szyfrowaniu ;)