![]() |
Verschlüsselungstool
Hallo zusammen,
bräuchte dringend mal hilfe. Ich muss ein Verschlüsselungtool, in einem formular programmieren. Ich habe ein memofeld für strings und ein editfeld für integer, das editfeld bestimmt den schlüssel und schlüssel 3 macht aus a ein d. Der schlüssel bestimmt um wieviele zeichen der text verschoben wird. Nur hab ich keinen plan wie ich das machen soll. :wall: :wall: :wall: :wall: :wall: :wall: |
Re: Verschlüsselungstool
das klingt irgendwie nach einer Cäsar-Verschlüsselung
[msdn]Cäsar Verschlüsselung[/msdn] ![]() und es gibt auch einige Beispiele dazu im Forum zu finden [dp]cäsar[/dp] genauer gesag, ist das der Sonderfall ![]() ![]() ![]() |
Re: Verschlüsselungstool
Von verschlüsselung kann man bei
![]() Die Funktionen Ord und Chr sind deine Freunde um Characterzeichen zu verschieben. |
Re: Verschlüsselungstool
@Bernhard:
Zitat:
|
DP-Maintenance
Dieses Thema wurde von "Daniel G" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Das ist definitiv kein Beitrag für die CodeLib. |
Re: Verschlüsselungstool
ja aber wie programmier ich das dann alles?
ich versteh da leider nur bahnhof(ankunft-abfahrt-information) :coder2: |
Re: Verschlüsselungstool
Zitat:
|
Re: Verschlüsselungstool
hab was gefunden, jetzt muss ich nur noch herausfinden wie ich die zahl vom editfeld mit einbeziehen kann.
Hier ist der Quellcode:
Delphi-Quellcode:
[edit=Sharky][delphi-Tags] eingefügt. Mfg, Sharky[/edit]
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. |
Re: Verschlüsselungstool
Hi,
erst einmal herzlich willkommen in der DP :dp: Zitat:
Gruß Wolfgang |
Re: Verschlüsselungstool
Na Prima, dann musst du ja eigentlich nur wissen, was das hier bedeutet:
Delphi-Quellcode:
Sherlock
normedKey := Ord(AKey) - Ord('A') +1;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz