![]() |
einfaches Entschlüsselungsproblem
Habe einen Text so versclüsselt:
Delphi-Quellcode:
Nun die Frage , wie kann man das Entschlüsseln???Wenn ich das + durch ein Minus ersetze:
var i,j:integer;
key:string; begin key:=Edit1.Text; for j:=1 to length(key) do begin for i:=1 to length(s) do begin S[i]:=Chr(65 + ((Ord(S[i]) - 65) + (Ord(Key[j]) - 65)) mod 26 ); end; end; Memo1.Lines.Text:=s;
Delphi-Quellcode:
kommt nicht der Klartext raus.Was mache ich falsch????
S[i]:=Chr(65 + ((Ord(S[i]) - 65) - (Ord(Key[j]) - 65)) mod 26 );
MFG und ALlen einen GUTEN Rutsch!!! |
Re: einfaches Entschlüsselungsproblem
Auch dir alles Gute für das kommende Jahr, Penelopee.
Was du falsch gemacht hast kann ich dir nur sagen, wenn du vorher verrätst, was du eigentlich machen wolltest. Dein Code sieht etwas seltsam aus. Die Nachricht wird mit jedem Zeichen aus dem Schlüssel einmal "verschlüsselt". Das Alphabet für deine Nachricht und den Schlüssel muss in beiden Fällen ['A'..'Z'] sein, sonst funktioniert es nicht.
Delphi-Quellcode:
Wie könnte denn die Funktion Decode() aussehen?
// Einfachverschlüsselung, rollender Schlüssel
function Cipher(const text, key: string; encoding: boolean): string; var i: integer; t, k, c: integer; begin SetLength(Result, Length(text)); for i := 1 to Length(text) do begin t := Ord(text[i]) - 65 + 26; k := Ord(key[Succ(Pred(i) mod Length(key))]) - 65; if encoding then c := t + k else c := t - k; Result[i] := Chr(65 + (c mod 26)); end; end; function Encode(const text, key: string): string; begin Result := Cipher(Text, key, true); end; Silvestergrüße vom marabu Nachtrag: Du wolltest wahrscheinlich gar keinen rollenden Schlüssel!?
Delphi-Quellcode:
Nachtrag zum Nachtrag:
// Mehrfachverschlüsselung
function Cipher(const text, key: string; encoding: boolean): string; var i, j: integer; t, k, c: integer; begin SetLength(Result, Length(text)); for j := 1 to Length(key) do for i := 1 to Length(text) do begin t := Ord(text[i]) - 65 + 26; k := Ord(key[j]) - 65; if encoding then c := t + k else c := t - k; Result[i] := Chr(65 + (c mod 26)); end; end; Diese Form der Mehrfachverschlüsselung hat keinen Einfluss auf die Sicherheit, vervielfacht aber den Rechenaufwand. |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Multimedia" nach "Sonstige Fragen zu Delphi" verschoben.
Ist irgenwie nicht so richtig etwas für Multimedia. |
Re: einfaches Entschlüsselungsproblem
Ich hab deine Verschlüsselung leicht abgeändert (Klammerung) und die passende Entschlüsselung mitgeliefert. Das Ganze funktioniert aber nur im Bereich der Grossbuchstaben.
Delphi-Quellcode:
procedure Encode;
var i,j:integer; s,key:string; begin key:=Edit1.Text; s:=memo1.lines.text; for j:=1 to length(key) do begin for i:=1 to length(s) do begin S[i]:=Chr(65 + ((Ord(S[i]) - 65) + (Ord(Key[j]) - 65) mod 26 )); end; end; Memo1.Lines.Text:=s; end; procedure Decode; var x,i,j:integer; s,key:string; begin key:=Edit1.Text; s:=memo1.lines.text; for j:=1 to length(key) do begin for i:=1 to length(s) do begin x:=(Ord(S[i]) - 65) - (Ord(Key[j]) - 65); if x<0 then x:=26+x; S[i]:=Chr(65 + x); end; end; Memo1.Lines.Text:=s; end; |
Re: einfaches Entschlüsselungsproblem
Zitat:
das funktioniert leider nicht , trotzdem danke!!!!! |
Re: einfaches Entschlüsselungsproblem
Bei mir funktioniert's, aber eben nur im Alphabet 'A'..'Z'. Man darf insbesondere auch kein Leerzeichen und keine Umlaute verwenden. Hast du dies beim testen beachtet?
|
Re: einfaches Entschlüsselungsproblem
Zitat:
|
Re: einfaches Entschlüsselungsproblem
Zitat:
Delphi-Quellcode:
procedure TForm1.Encode;
var i,j:integer; s,key:string; begin key := Edit1.Text; s := memo1.lines.text; for j := 1 to length(key) do begin for i := 1 to length(s) do begin S[i] := Chr( Ord(S[i]) + Ord(Key[j]) mod 256 ); end; end; Memo1.Lines.Text := s; end; procedure TForm1.Decode; var x,i,j:integer; s,key:string; begin key := Edit1.Text; s := memo1.lines.text; for j := 1 to length(key) do begin for i := 1 to length(s) do begin x := Ord(S[i]) - Ord(Key[j]); if x < 0 then x := 256 + x; S[i] := Chr(x); end; end; Memo1.Lines.Text := s; end; |
Re: einfaches Entschlüsselungsproblem
Zitat:
Hier ein kleiner Ausschnitt aus dem ASCII-Code:
Delphi-Quellcode:
@Penelope:
var Ch:Char;
case Ord(Ch) of 32,160:Ch:=' '; 65:Ch:='A'; 66:Ch:='B'; 67:Ch:='C'; ... 192:Ch:='└'; end; Sag mal, wie nennt sich deine Verschlüsselungsart ? Du verschlüsselst jedes Zeichen deines Klartextes mit jedem Zeichen deines Keys. Oder sollte es eine One-Time-Pad-Geschichte werden ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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-2025 by Thomas Breitkreuz