Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verschlüsselungstool (https://www.delphipraxis.net/143064-verschluesselungstool.html)

Nero281084 9. Nov 2009 08:02


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:

himitsu 9. Nov 2009 08:18

Re: Verschlüsselungstool
 
das klingt irgendwie nach einer Cäsar-Verschlüsselung

[msdn]Cäsar Verschlüsselung[/msdn]
http://de.wikipedia.org/wiki/Verschiebechiffre
und es gibt auch einige Beispiele dazu im Forum zu finden [dp]cäsar[/dp]


genauer gesag, ist das der Sonderfall Hier im Forum suchenROT13, Bei Google suchenROT13, ROT13

Bernhard Geyer 9. Nov 2009 08:20

Re: Verschlüsselungstool
 
Von verschlüsselung kann man bei Verschiebeschiffre eher nicht reden. Vor 2000 Jahren was das mal in, aber heutzutage ist das maximal eine einfache Verschleierung.

Die Funktionen Ord und Chr sind deine Freunde um Characterzeichen zu verschieben.

himitsu 9. Nov 2009 08:24

Re: Verschlüsselungstool
 
@Bernhard:
Zitat:

Ich muss ein Verschlüsselungtool, in einem formular programmieren.
In der Schule nimmt man auch erher mal einfache Dinge ... muß dann ja nicht so sicher sein, hauptsache es macht ein bissl Arbeit :angel:

DP-Maintenance 9. Nov 2009 08:25

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.

Nero281084 9. Nov 2009 08:53

Re: Verschlüsselungstool
 
ja aber wie programmier ich das dann alles?
ich versteh da leider nur bahnhof(ankunft-abfahrt-information) :coder2:

DeddyH 9. Nov 2009 09:11

Re: Verschlüsselungstool
 
Zitat:

Zitat von Bernhard Geyer
Die Funktionen Ord und Chr sind deine Freunde um Characterzeichen zu verschieben.

Das große A hat den Code 65, d.h. Ord('A') ergibt 65, umgekehrt ergibt Chr(65) das große A. Also musst Du nur aus der 65 die 68 machen, um auf D zu kommen.

Nero281084 9. Nov 2009 13:34

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:
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]

Wolfgang Mix 9. Nov 2009 13:57

Re: Verschlüsselungstool
 
Hi,

erst einmal herzlich willkommen in der DP :dp:

Zitat:

hab was gefunden, jetzt muss ich nur noch herausfinden wie ich die zahl vom editfeld mit einbeziehen kann.
Hier ist der Quellcode:
Es wäre nett, wenn Du bei fremdem Code noch die Fundstelle (URL) mit angeben würdest.

Gruß

Wolfgang

Sherlock 9. Nov 2009 13:57

Re: Verschlüsselungstool
 
Na Prima, dann musst du ja eigentlich nur wissen, was das hier bedeutet:
Delphi-Quellcode:
normedKey := Ord(AKey) - Ord('A') +1;
Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:46 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz