AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

einfaches Entschlüsselungsproblem

Ein Thema von Penelopee · begonnen am 31. Dez 2005 · letzter Beitrag vom 13. Jan 2006
Antwort Antwort
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#1

einfaches Entschlüsselungsproblem

  Alt 31. Dez 2005, 12:17
Habe einen Text so versclüsselt:
Delphi-Quellcode:
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;
Nun die Frage , wie kann man das Entschlüsseln???Wenn ich das + durch ein Minus ersetze:
S[i]:=Chr(65 + ((Ord(S[i]) - 65) - (Ord(Key[j]) - 65)) mod 26 ); kommt nicht der Klartext raus.Was mache ich falsch????

MFG und ALlen einen GUTEN Rutsch!!!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: einfaches Entschlüsselungsproblem

  Alt 31. Dez 2005, 13:08
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:
// 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;
Wie könnte denn die Funktion Decode() aussehen?

Silvestergrüße vom marabu


Nachtrag:

Du wolltest wahrscheinlich gar keinen rollenden Schlüssel!?

Delphi-Quellcode:
// 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;
Nachtrag zum Nachtrag:

Diese Form der Mehrfachverschlüsselung hat keinen Einfluss auf die Sicherheit, vervielfacht aber den Rechenaufwand.
  Mit Zitat antworten Zitat
31. Dez 2005, 13:15
Dieses Thema wurde von "Sharky" von "Multimedia" nach "Sonstige Fragen zu Delphi" verschoben.
Ist irgenwie nicht so richtig etwas für Multimedia.
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#4

Re: einfaches Entschlüsselungsproblem

  Alt 31. Dez 2005, 16:54
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;
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#5

Re: einfaches Entschlüsselungsproblem

  Alt 31. Dez 2005, 19:08
Zitat von tomsel:
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;

das funktioniert leider nicht , trotzdem danke!!!!!
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#6

Re: einfaches Entschlüsselungsproblem

  Alt 1. Jan 2006, 16:37
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?
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#7

Re: einfaches Entschlüsselungsproblem

  Alt 2. Jan 2006, 02:21
Zitat von tomsel:
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?
Wie kann ich den Quellqode denn umbauen , dass es mit Leerzeichen funktioniert???
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#8

Re: einfaches Entschlüsselungsproblem

  Alt 2. Jan 2006, 08:51
Zitat:
Zitat von Penelopee:
Zitat von tomsel:
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?
Wie kann ich den Quellqode denn umbauen , dass es mit Leerzeichen funktioniert???
So zum Beispiel:

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;
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#9

Re: einfaches Entschlüsselungsproblem

  Alt 13. Jan 2006, 11:39
Zitat von Penelopee:
Zitat von tomsel:
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?
Wie kann ich den Quellqode denn umbauen , dass es mit Leerzeichen funktioniert???
Nur mit Leerzeichen und Buchstaben ist es schwierig.
Hier ein kleiner Ausschnitt aus dem ASCII-Code:
Delphi-Quellcode:
var Ch:Char;

case Ord(Ch) of
  32,160:Ch:=' ';
  65:Ch:='A';
  66:Ch:='B';
  67:Ch:='C';
  ...
  192:Ch:='';
end;
@Penelope:
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 ?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr.
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