Registriert seit: 29. Okt 2009
12 Beiträge
Delphi 2007 Professional
|
Re: Verschlüsselungstool
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]
|
|
Zitat
|