Autor Beitrag
goog Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37



BeitragVerfasst: Mo 17.01.05 18:05 
Hi IngoD7!

Vielen Dank für die hilfe.

Ich glaub ich hab den Fehler.
Wie wäre es mit:
ausblenden Delphi-Quelltext
1:
2:
 Zeile := ((Position-1DIV 5)+1;   
Spalte := ((Position-1MOD 5)+1;


Jetzt stimmt meine Rechnung

gruß goog
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 17.01.05 19:42 
goog hat folgendes geschrieben:
Hi IngoD7!

Vielen Dank für die hilfe.

Ich glaub ich hab den Fehler.
Wie wäre es mit:
ausblenden Delphi-Quelltext
1:
2:
 Zeile := ((Position-1DIV 5)+1;   
Spalte := ((Position-1MOD 5)+1;


Jetzt stimmt meine Rechnung


Korrekt. :)

Und nun fix weiter mit der Verschlüsselungroutine. Es wir eng bis Mittwoch.
goog Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37



BeitragVerfasst: Mo 17.01.05 19:56 
Hi IngoD7!

Ich habs jetzt so gut wie fertig (glaub ich zumindest :lol: ).
Aber laufen wills noch nicht.
Warum zeigt er mir im edit4 nicht das ergebnis an, ich habe als ergebnisstring eine Variable "ergebnis" global deklariert in die die verschlüsselten Buchstaben geschrieben werden.
Hier ist jetzt mal mein bisheriger kompletter Quelltext:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
unit play;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);


  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

const al='ABCDEFGHIKLMNOPQRSTUVWXYZ';
var matrix,ergebnis :string;

{$R *.DFM}


function zerlege (text:string):string;      
var  
  i : integer;  
begin  
i:=1;                       //i initialisieren.  
while i < length(text) do   //Solange i das Ende von text ..  
                            //.. nicht erreicht hat, ..  
   begin                       //.. schauen ob der nächste Buchstabe ..  
   if text[i]=text[i+1then   //.. identisch ist.  
      begin                        //Wenn ja, 'X' einfügen.   
      insert('X',text,i+1);        
      end;
   inc(i,2);                   //i erhöhen --> auf nächste ..
   end;                        //.. Zweiergruppe setzen.
if odd(length(text)) then   //Wenn text-Länge ungerade, 'X' anhängen.
   text:=text+'X';
result:=text;               //Rückgabewert
end;

function verschluessel (text:string):string ;
var i,p,l,p1,z1,s1,p2,z2,s2:integer;
begin
l:=length(text);
i:=1;
 while i < l do
    begin
    if text[i]='J' then text[i]:='I'//Ganz wichtig! J gibt es in der Matrix nicht.
    p1:=pos(text[i],matrix);         //Position des ersten Buchst. in p1.
    z1:=((p1-1DIV 5)+1;
    s1:=((p1-1MOD 5)+1;
    inc(i);                          //i auf nächsten Buchstaben

    if text[i]='J' then text[i]:='I'//Ganz wichtig! J gibt es in der Matrix nicht.
    p2:=pos(text[i],matrix);         //Position des zweiten Buchst. in p2.
    z2:=((p2-1DIV 5);
    s2:=((p2-1MOD 5);
    inc(i);                          //i auf nächsten Buchstaben

    if z1=z2 then //Wenn beide Buchst. in einer Zeile liegen, dann ..
       begin
        case p1 of
        5:   p1:=0;
        10:  p1:=5;
        15:  p1:=10;
        20:  p1:=15;
        25:  p1:=20;
        end;
        ergebnis[i-2]:=matrix[p1+1]; //ergebnis an der ersten stelle buchstaben zuweisen
        case p2 of
        5:   p2:=0;
        10:  p2:=5;
        15:  p2:=10;
        20:  p2:=15;
        25:  p2:=20;
        end;
        ergebnis[i-1]:=matrix[p2+1];    //ergebnis an der zweiten stelle buchstaben zuweisen
       end
    else
       if s1=s2 then //Oder aber wenn beide Buchst. in einer Spalte liegen, dann ..
          begin
           case p1 of
           21: p1:=-4;
           22: p1:=-3;
           23: p1:=-2;
           24: p1:=-1;
           25: p1:=0;
           end;
           ergebnis[i-2]:=matrix[p1+5];
           case p2 of
           21: p1:=-4;
           22: p1:=-3;
           23: p1:=-2;
           24: p1:=-1;
           25: p1:=0;
           end;
           ergebnis[i-1]:=matrix[p2+5];


          end
       else          //Oder aber beide Buchstaben sind weder in der gleichen ..
          begin      //.. Zeile noch in der gleichen Spalte, dann ..
           If s1<s2 then
            ergebnis[i-2]:=matrix[p1+(s2-s1)];
            ergebnis[i-1]:=matrix[p2-(s2-s1)];
           If s1>s2 then
            ergebnis[i-2]:=matrix[p1-(s1-s2)];
            ergebnis[i-1]:=matrix[p2+(s1-s2)];
          end;


    end;  //end while

end;


procedure TForm1.Button1Click(Sender: TObject);
var schluessel,ns: string;
      zeile,spalte,i,l,p,p2      :integer;
begin
schluessel:='MATHEMATIKER';   //hier ist der Schlüssel der Matrix festgelegt
text:=edit1.text;             //der zu codierende Text wird eigelesen
text:=zerlege(text);       //Funktionsaufruf(zerlege)
l:=length(schluessel);
ns:='';                   //neuer schluessel ist leer
for i:=1 to l do             //für i:=1 bis Länge von schluessel tue
 begin
  if schluessel[i]='j' then schluessel[i]:='i';   //aus j wird ein i
  p:=pos(schluessel[i],ns);                         //Position wird ermittelt
  if p=0 then ns:= ns+schluessel[i];   //wenn Buchstabe noch nicht vorhanden, dann dazu
 end;

matrix:=ns;             //matrix wird neuer Schluessel
for i:=1 to 25 do       //für i:=1 bis 25(anzahl der Buchstaben im Alphabet) tue
  begin
   p2:=pos(al[i],matrix);  //Position bestimmen
   if p2=0 then            // wenn Buchstabe noch nicht vorhanden, dann dazufügen
   matrix:=matrix+al[i];
  end;


edit2.text:=matrix;
edit3.text:=text;
edit4.text:=ergebnis;
end;


end.


Irgendwie krieg ich das mit der Rückgabe in der verschluessel Funktion net hin :?:

gruß goog
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 17.01.05 21:15 
Bin gerade etwas in Streß. Habe jetzt den ganzen Code nicht kontrolliert, nur überflogen.

Nur ein paar (wichtige) Dinge mal eben:

goog hat folgendes geschrieben:

Warum zeigt er mir im edit4 nicht das ergebnis an, [...]
Irgendwie krieg ich das mit der Rückgabe in der verschluessel Funktion net hin :?:


Möchtest du die Funktion Verschluessel nicht auch nochmal irgendwann in Button1Click aufrufen? :roll: :wink:

Deine DIV- und MOD-Formeln solltest du besser für beide Buchstaben korrekt haben.

Beim Erstellen der Matrix ersetzt du im Schlüssel "j" durch "i". Hier musst du große Buchstaben nehmen. Das ganze Programm setzt momentan voraus, dass nur große Buchstaben benutzt werden. Dann musst du auch Großbuchstaben ersetzen.

Auf was hast du eigentlich ergebnis zuvor gesetzt? Wenn du dabeigehst und einzelne Buchstaben von ergebnis veränderst, so sollte vorher auch was drinstehen. Normalerweise macht man das so, dass man ergebnis Stück für Stück aufbaut. Sinngemäß: ergebnis:=ergebnis+ErmittelterBuchstabe.

Als kosmetische Feinheit würde ich eine Funktion oder Prozedur MatrixErstellen machen, der du das Schlüsselwort übergibst (mache das, wenn du noch Zeit hast, später).

Und weiter geht's ....
goog Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37



BeitragVerfasst: Mo 17.01.05 23:04 
Hi IngoD7!

Juhhhhhuuuuuuuuuu :!: :D :D :D es läuft !!!

Vielen Dank
Ich hab noch mal ein paar Änderungen vorgenommen, auch mit der Funktion "matrix".

hier der neue Quelltext:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
unit play;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);


  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

const al='abcdefghiklmnopqrstuvwxyz';


{$R *.DFM}


function zerlege (text:string):string;      
var  
  i : integer;  
begin  
i:=1;                       //i initialisieren.  
while i < length(text) do   //Solange i das Ende von text ..  
                            //.. nicht erreicht hat, ..  
   begin                       //.. schauen ob der nächste Buchstabe ..  
   if text[i]=text[i+1then   //.. identisch ist.  
      begin                        //Wenn ja, 'X' einfügen.   
      insert('x',text,i+1);
      end;
   inc(i,2);                   //i erhöhen --> auf nächste ..
   end;                        //.. Zweiergruppe setzen.
if odd(length(text)) then   //Wenn text-Länge ungerade, 'X' anhängen.
   text:=text+'x';
result:=text;               //Rückgabewert
end;


function matrix(schluessel:string):string;
var ns: string;
    i,p,p2:integer;
begin
ns:='';                   //neuer schluessel ist leer
for i:=1 to length(schluessel) do             //für i:=1 bis Länge von schluessel tue
 begin
  if schluessel[i]='j' then schluessel[i]:='i';   //aus j wird ein i
  p:=pos(schluessel[i],ns);                         //Position wird ermittelt
  if p=0 then ns:= ns+schluessel[i];   //wenn Buchstabe noch nicht vorhanden, dann dazu
 end;

schluessel:=ns;             //schluessel wird neuer Schluessel
for i:=1 to 25 do       //für i:=1 bis 25(anzahl der Buchstaben im Alphabet) tue
  begin
   p2:=pos(al[i],schluessel);  //Position bestimmen
   if p2=0 then            // wenn Buchstabe noch nicht vorhanden, dann dazufügen
   schluessel:=schluessel+al[i];
  end;
result:=schluessel;
end;



function verschluessel (text,schluessel:string):string ;
var i,l,p1,z1,s1,p2,z2,s2:integer;
begin
l:=length(text);
i:=1;
 while i < l do
    begin
    if text[i]='j' then text[i]:='i'//Ganz wichtig! J gibt es in der Matrix nicht.
    p1:=pos(text[i],schluessel);         //Position des ersten Buchst. in p1.
    z1:=((p1-1DIV 5)+1;
    s1:=((p1-1MOD 5)+1;
    inc(i);                          //i auf nächsten Buchstaben

    if text[i]='j' then text[i]:='i'//Ganz wichtig! J gibt es in der Matrix nicht.
    p2:=pos(text[i],schluessel);         //Position des zweiten Buchst. in p2.
    z2:=((p2-1DIV 5)+1;
    s2:=((p2-1MOD 5)+1;
    inc(i);                          //i auf nächsten Buchstaben

    if z1=z2 then //Wenn beide Buchst. in einer Zeile liegen, dann ..
       begin
        case p1 of
        5:   p1:=0;
        10:  p1:=5;
        15:  p1:=10;
        20:  p1:=15;
        25:  p1:=20;
        end;
        text[i-2]:=schluessel[p1+1]; //ergebnis an der ersten stelle buchstaben zuweisen
        case p2 of
        5:   p2:=0;
        10:  p2:=5;
        15:  p2:=10;
        20:  p2:=15;
        25:  p2:=20;
        end;
        text[i-1]:=schluessel[p2+1]; //ergebnis an der zweiten stelle buchstaben zuweisen
       end
    else
       if s1=s2 then //Oder aber wenn beide Buchst. in einer Spalte liegen, dann ..
          begin
           case p1 of
           21: p1:=-4;
           22: p1:=-3;
           23: p1:=-2;
           24: p1:=-1;
           25: p1:=0;
           end;
           text[i-2]:=schluessel[p1+5];
           case p2 of
           21: p2:=-4;
           22: p2:=-3;
           23: p2:=-2;
           24: p2:=-1;
           25: p2:=0;
           end;
           text[i-1]:=schluessel[p2+5];


          end
       else          //Oder aber beide Buchstaben sind weder in der gleichen ..
          begin      //.. Zeile noch in der gleichen Spalte, dann ..
           If s1<s2 then
            text[i-2]:=schluessel[p1+(s2-s1)];
            text[i-1]:=schluessel[p2-(s2-s1)];
           If s1>s2 then
            text[i-2]:=schluessel[p1-(s1-s2)];
            text[i-1]:=schluessel[p2+(s1-s2)];
          end;
    end;  //end while
result:=text;
end;


procedure TForm1.Button1Click(Sender: TObject);
var schluessel,text: string;
begin
schluessel:='playfair';   //hier ist der Schlüssel der Matrix festgelegt
text:=edit1.text;             //der zu codierende Text wird eigelesen
text:=zerlege(text);          //Funktionsaufruf(zerlege)
edit3.text:=text;
schluessel:=matrix(schluessel);
edit2.text:=schluessel;
text:=verschluessel(text,schluessel);
edit4.text:=text;
end;


jetzt muss ich bloß noch das entschlüsseln hinkriegen.
Kann ich das nun auch mit der Funktion "verschluessel" machen?

gruß goog
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 17.01.05 23:36 
Zum Schluß bist du ein paar - sagen wir mal - "eigenwillige" Wege gegangen. :wink:
Nun gut, das ist deine "künstlerische Freiheit". Wichtig dürfte sein, dass am Ende das richtige herauskommt.

Da tut es aber bestimmt noch nicht. Und zwar folgendes:
Wenn du möchtest, dass die Anweisungen MacheA und MacheB ausgeführt werden, wenn BedingungX der Fall ist, dann müssen die beiden Anweisungen in begin..end eingeschlossen werden.
Also so (Pseudo):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if BedingungX then
   begin
   MacheA;   //Führt MacheA aus, wenn BedingungX der Fall ist.
   MacheB;   //Führt MacheB aus, wenn BedingungX der Fall ist.
   end;

Wenn du begin..end weglässt, passiert folgendes:
ausblenden Delphi-Quelltext
1:
2:
3:
if BedingungX then
   MacheA;   //Führt MacheA aus, wenn BedingungX der Fall ist.
MacheB;   //Führt MacheB immer(!) aus.

Schau jetzt mal, wo du das missachtest hast und korrigiere es.

Zum Entschlüsseln sei gesagt, dass es ein Gerücht ist, zu behaupten, sie ginge in der selben Routine wie das Verschlüsseln. Überlege mal: Wo du vorher zum Verschlüsseln in der Matrix beispielsweise den Buchstaben unter dem gefundenen nehmen musstest (oder den rechts davon), so musst du zum Entschlüsseln den darüber (bzw. den links davon) nehmen. Das geht natürlich nicht in derselben Routine. Man könnte Teile der Routine verwenden, nämlich die Suche der Buchstaben in der Matrix. Aber ab deinen case-Anweisungen muss dann unterschieden werden: Ver- oder entschlüssele ich?

Wenn's nicht unbedingt anders gefordert ist, würde ich eine Extra-Funktion für das Verschlüsseln schreiben.

Wenn du nun in die Endphase gehst, dann teste dein Programm auf Herz und Nieren. Ich werde dir das nicht abnehmen. Ich weise dich auf mehr oder minder offensichtliche Fehler im Code - wenn ich sie entdecke - hin. Wenn aber uns beiden irgendetwas durch die Lappen geht, was jederzeit passieren kann, so wird das nur ein abschließender gründlicher Test ans Tageslicht bringen. Das bedeutet nix anderes, als dass du irgendwo Referenzverschlüsselungen auftreiben musst, um sie mit den Ergebnissen deines Programmes zu vergleichen. Das kann sehr gut auch bedeuten, dass du mal zwei oder drei Verschlüsselungen von Hand durchführen musst, um zu sehen, ob dein Programm auf dasselbe Ergebnis kommt. :wink:
goog Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37



BeitragVerfasst: Di 18.01.05 00:01 
Hi IngoD7!

Ich glaub so gehts mit dem entschlüsseln.
nur das beim entschlüsselten Text die eingefügten x noch stören.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
function entschluessel (text,schluessel:string):string;
var i,l,p1,z1,s1,p2,z2,s2:integer;
begin
l:=length(text);
i:=1;
 while i < l do
    begin
    //if text[i]='j' then text[i]:='i'; //Ganz wichtig! J gibt es in der Matrix nicht.
    p1:=pos(text[i],schluessel);         //Position des ersten Buchst. in p1.
    z1:=((p1-1DIV 5)+1;
    s1:=((p1-1MOD 5)+1;
    inc(i);                          //i auf nächsten Buchstaben

    if text[i]='j' then text[i]:='i'//Ganz wichtig! J gibt es in der Matrix nicht.
    p2:=pos(text[i],schluessel);         //Position des zweiten Buchst. in p2.
    z2:=((p2-1DIV 5)+1;
    s2:=((p2-1MOD 5)+1;
    inc(i);                          //i auf nächsten Buchstaben

    if z1=z2 then //Wenn beide Buchst. in einer Zeile liegen, dann ..
       begin
        case p1 of
        1:   p1:=6;
        6:   p1:=11;
        11:  p1:=16;
        16:  p1:=21;
        21:  p1:=26;
        end;
        text[i-2]:=schluessel[p1-1]; //ergebnis an der ersten stelle buchstaben zuweisen
        case p2 of
        1:   p2:=5;
        6:   p2:=10;
        11:  p2:=15;
        16:  p2:=20;
        21:  p2:=25;
        end;
        text[i-1]:=schluessel[p2-1]; //ergebnis an der zweiten stelle buchstaben zuweisen
       end
    else
       if s1=s2 then //Oder aber wenn beide Buchst. in einer Spalte liegen, dann ..
          begin
           case p1 of
           21: p1:=-4;
           22: p1:=-3;
           23: p1:=-2;
           24: p1:=-1;
           25: p1:=0;
           end;
           text[i-2]:=schluessel[p1-5];
           case p2 of
           21: p2:=-4;
           22: p2:=-3;
           23: p2:=-2;
           24: p2:=-1;
           25: p2:=0;
           end;
           text[i-1]:=schluessel[p2-5];


          end
       else          //Oder aber beide Buchstaben sind weder in der gleichen ..
          begin      //.. Zeile noch in der gleichen Spalte, dann ..
           If s1<s2 then
            begin
             text[i-2]:=schluessel[p1+(s2-s1)];
             text[i-1]:=schluessel[p2-(s2-s1)];
            end;
           If s1>s2 then
            begin
             text[i-2]:=schluessel[p1-(s1-s2)];
             text[i-1]:=schluessel[p2+(s1-s2)];
            end;
          end;
    end;  //end while
result:=text;
end;


gruß goog
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Di 18.01.05 03:58 
goog hat folgendes geschrieben:
Hi IngoD7!

Ich glaub so gehts mit dem entschlüsseln.
nur das beim entschlüsselten Text die eingefügten x noch stören.


Okay, wie gesagt: Probiere es aus, dass du dir wirklich sicher sein kannst, alles richtig gemacht zu haben. Ich habe es nicht getestet.

Die X sind beim Zerlegen reingekommen und die bekommst du auch nicht wieder 100%-ig raus. Siehe im Verlauf dieses Threads. Da waren wir schon drauf eingegangen, dass es verschiedene Worte gibt, die nach dem Zerlegen dasselbe Ergebnis bringen. Kein Algorithmus der Welt wird hier dann jetzt 100%-ig erkennen können, welches Ursprungswort es mal gewesen ist.

Das Programm kann getrost nach dem Entschlüsseln aufhören. Zurückzerlegen geht nicht - jedenfalls nicht bei dem Zerlege-Algorithmus, wie wir ihn verstanden und du ihn jetzt programmiert hast. Ich denke mal, das hat Playfair auch nicht vorgesehen. Jedenfalls nicht ein Playfair mit einer schlappen 5x5-Matrix.
King of the Road
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 20.03.06 14:15 
Hallo Leute,

Ich habe ein Problem. Ich habe eine BVuchstaben Kombination, die nach Playfair verschlüsselt ist. Leider habe ich keine Ahnung, wie man diese Entschlüsselt.
Die Buchstaben Kombination lautet: O G N I I N U W.

Kann mir jemand weiterhelfen und diese Kombination entschlüsseln?

Wäre euch sehr dankbar!

Gruß
King of the Road
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Sa 25.03.06 15:27 
@
user profile iconKing of the Road hat folgendes geschrieben:
Hallo Leute,

Ich habe ein Problem. Ich habe eine BVuchstaben Kombination, die nach Playfair verschlüsselt ist. Leider habe ich keine Ahnung, wie man diese Entschlüsselt.
Die Buchstaben Kombination lautet: O G N I I N U W.

Kann mir jemand weiterhelfen und diese Kombination entschlüsseln?


Ich glaube das ist definitiv zu kurz als das man es entschlüsseln könnte, jedenfalls wenn du nicht weitere Informationen (z.B. den PlayFair-Kasten) hast.

Ansonsten kann ich nur das Buch "Verschlüsselte Botschaften" empfehlen, da stehen viele Algorithmen, auch Playfair, drin und z.T. wie man sie entschlüsselt. Ausserdem ist glaub ich (hab meins grad nicht da) ein Verfahren angegeben welches das Doppelbuchstaben-Problem, welches im Anfang von diesem Thread beschrieben wurde, umgeht, Doppelkasten hieß das glaube ich.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)