Implementacja algorytmu Rot13

Adam Boduch

Rot13 to prosty szyfr przesuwający, polegający na zamianie każdego znaku alfabetu łacińskiego na znak występujący 13 pozycji po nim, przy czym wielkość liter nie ma przy przekształcaniu znaczenia. Najważniejszą cechą rot13 w porównaniu z innymi szyframi jest to, że sam jest swoją odwrotnością, czyli używa się tej samej funkcji do kodowania i dekodowania wiadomości: rot13(rot13(m)) = m.

Rot13 jest często stosowany w Usenecie oraz w sytuacjach, gdy przekazując komuś jakąś wiadomość, jednocześnie chcemy sprawić, aby nie była ona bezpośrednio odczytywana. Ta metoda jest stosowana w przypadkach, gdy treść informacji mogłaby zranić uczucia osobiste, estetyczne, moralne jakieś osoby lub np. gdy może zdradzić puentę jakiegoś dzieła (filmu, książki itp.). [#]_

Funkcja implementująca algorytm Rot13 jest bardzo prosta:

function Rot13(Input : String) : String;
var
  StrLen, i, charNum : Word;
begin
  StrLen := Length(Input);

  for i:= 1 to StrLen do
  begin
    charNum:= Ord(Input[i]);
    if (UpCase(Input[i]) in ['A'..'M']) then inc(charNum, 13) else
    if (UpCase(Input[i]) in ['N'..'Z']) then dec(charNum, 13);
    result:= result + chr(charNum);
  end;
end;

Parametr musi zawierać tekst do zaszyfrowania - przykład:

Edit1.Text := Rot13(Edit1.Text);

Zobacz też:


.. [#] Źródło: <wiki href="Rot13">Wikipedia</wiki>

1 komentarz

o ile pamiętam to jest chyba tzw. Szyfr Cezara. Ale nie jestem pewnien.