Einzelnen Beitrag anzeigen

fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Entschluesselungsalgorithmus

  Alt 26. Okt 2010, 16:31
Erklär doch mal was du hier machen willst, ich sehe da nämlich nur einen geringen Sinn........

Delphi-Quellcode:
for i := 1 to length(Klartext) do
  begin
    for k:=1 to length(Schluessel) do
    begin
      if Klartext[i] = Schluessel[k] then
      begin
        if k mod 2 = 0
          then Zwischentext[i] := Schluessel[k-1]
          else if k < length(Schluessel)
                  then Zwischentext[i] := Schluessel[k+1]

      end;
    end;

...
Beispiel deiner Funktion:
Klartext := 'HALLOWELT';
Schluessel := 'HOLBERT';

Das (müsste) passieren:
Klartext[1] = Schluessel[1] stimmt
k ist 1, also ist k mod 2 = 1 -> else tritt ein
Zwischentext: 'IALLOWELT';

Klartext[1] = Schluessel[2] stimmt nicht
...


-> jedenfalls ist der erste Buchstabe schonmal das 'I'


Jetzt machen wir das mit deiner Methode wieder rückgängig
Delphi-Quellcode:
 for i:= 1 to Length(Geheimtext) do
 begin
 
  for k:=1 to length(Schluessel) do
    begin
      if Geheimtext[i] = Schluessel[k] then
        begin
          if k mod 2 = 0
           then Zwischentext[i] := Schluessel[k-1]
           else if k < length(Schluessel)
                   then Zwischentext[i] := Schluessel[k+1]


        end;
    end;

...
I ist nicht gleich dem ersten Buchstaben aus dem Schlüssel, der ist ja H.
I kommt gar nicht im Schlüssel vor, also wird Geheimtext[1] = Schluessel[k] nie zutreffen und das I wird nie rückgängig gemacht





Im Prinzip musst du deine Verschlüsselungsmethode beim Entschlüsseln genau umgekehrt machen.
Das
Delphi-Quellcode:
Zeichen := Zwischentext[i];
    GTwert := GetStellenwertVon(Zeichen);
    KeyL := Length(Schluessel);
    KTWert := (GTWert - KeyL + 2700 - getStellenWertvon(Schluessel[3])) mod 27;
    //Zwischentext := Zwischentext + GetZeichenVon(GTWert);
    Zeichen := GetZeichenVon(KTWert);

    KLartext := Klartext + Zeichen;
muss also in geänderter Form oberhalb von
Delphi-Quellcode:
for i:= 1 to Length(Geheimtext) do
 begin
 
  for k:=1 to length(Schluessel) do
    begin
      if Geheimtext[i] = Schluessel[k] then
        begin
          if k mod 2 = 0
           then Zwischentext[i] := Schluessel[k-1]
           else if k < length(Schluessel)
                   then Zwischentext[i] := Schluessel[k+1]


        end;
    end;
stehen, weil es beim verschlüsseln schon in dieser Reihenfolge stand.

Wenn du nochmal genauer erklärst, was deine einzelnen Schritte machen sollen, können wir dir vielleicht weiter helfen

Geändert von fui-tak (26. Okt 2010 um 16:33 Uhr)
  Mit Zitat antworten Zitat