Thema: Delphi Verschlüsselungstool

Einzelnen Beitrag anzeigen

Nero281084

Registriert seit: 29. Okt 2009
12 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Verschlüsselungstool

  Alt 9. Nov 2009, 14:34
hab was gefunden, jetzt muss ich nur noch herausfinden wie ich die zahl vom editfeld mit einbeziehen kann.
Hier ist der Quellcode:
Delphi-Quellcode:
function EncryptCaesar(AText: string; AKey: Char): string;
var
  i: Integer;
  tmp: Integer;
  normedKey: Integer;
begin
  SetLength(Result, Length(AText));

  // alles in Großbuchstaben umwandeln
  // Caesar unterscheidet nicht zwischen Groß- und Kleinbuchstaben
  AText := UpperCase(AText);
  AKey := UpCase(AKey);

  if not (AKey in ['A'..'Z']) then
    raise EInvalidArgument.CreateFmt('Schlüssel ungültig(%s). AKey muss ein '
    + 'Buchstabe zwischen ''A'' und ''Z'' sein.', [AKey]);

  normedKey := Ord(AKey) - Ord('A') +1; // Schlüssel normalisieren

  for i := 1 to Length(AText) do
  begin
    if AText[i] in ['A'..'Z'] then // nur Buchstaben verschlüsseln
    begin
      tmp := (Ord(AText[i])) - Ord('A'); // Normalisieren
      tmp := (tmp + normedKey) mod 26; // Verschieben
      Result[i] := Chr(tmp + Ord('A')); // Denormalisieren
    end
    else
    begin
      Result[i] := AText[i]; // nicht verschlüsseln, wenn kein Buchstabe
    end;
  end;
end;

function DecryptCaesar(AText: string; AKey: Char): string;
var
  i: Integer;
  tmp: Integer;
  normedKey: Integer;
begin
  SetLength(Result, Length(AText));

  // alles in Großbuchstaben umwandeln
  // Caesar unterscheidet nicht zwischen Groß- und Kleinbuchstaben
  AText := UpperCase(AText);
  AKey := UpCase(AKey);

  if not (AKey in ['A'..'Z']) then
    raise EInvalidArgument.CreateFmt('Schlüssel ungültig(%s). AKey muss ein '
    + 'Buchstabe zwischen ''A'' und ''Z'' sein.', [AKey]);

  normedKey := Ord(AKey) - Ord('A') +1; // Schlüssel normalisieren

  for i := 1 to Length(AText) do
  begin
    if AText[i] in ['A'..'Z'] then // nur Buchstaben sind verschlüsselt
    begin
      tmp := (Ord(AText[i])) - Ord('A'); // Normalisieren
      tmp := (26 + (tmp - normedKey)) mod 26; // Verschieben
      Result[i] := Chr(tmp + Ord('A')); // Denormalisieren
    end
    else
    begin
      Result[i] := AText[i]; // nicht verschlüsseln, wenn kein Buchstabe
    end;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   Memo.Text := EncryptCaesar(Memo.Text, 'C');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    Memo.Text := DecryptCaesar(Memo.Text, 'C');
end;

end.
[edit=Sharky][delphi-Tags] eingefügt. Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat