AGB  ·  Datenschutz  ·  Impressum  







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

Entschluesselungsalgorithmus

Ein Thema von Noris · begonnen am 26. Okt 2010 · letzter Beitrag vom 31. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2      
Noris

Registriert seit: 17. Nov 2009
Ort: Berlin
29 Beiträge
 
Delphi 6 Personal
 
#1

Entschluesselungsalgorithmus

  Alt 26. Okt 2010, 15:25
Hallo,

ich schreibe ein Entschluesselungsprogramm (kein sehr sicheres) nur eine Übung.
Ich habe den Verschluesselungsalgorithmus schon fertig und er funktioniert jedoch funktioniert die Entschlusselung nicht...
Kann mir da jmd. helfen?

Hier die Verschluesselungsprocedure/function:


Delphi-Quellcode:
procedure TKryptobox.Verschluesseln;
(* -------------------------------------------------------------------- *)
var
  i,
  k,
  KTWert, KeyL,
  GTWert, EWert : integer;
  Zeichen : char;

begin
  Geheimtext := '' ;
  Vorbehandeln(Klartext);
  Vorbehandeln(Schluessel);
  Zwischentext := Klartext;
  // hier kommt Ihr Verschluesselungsalgorithmus hin!
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;

    Zeichen := Zwischentext[i];
    KTwert := GetStellenwertVon(Zeichen);
    KeyL := Length(Schluessel);
    GTWert := (KTWert + KeyL + getStellenWertvon(Schluessel[3])) mod 27;
    //Zwischentext := Zwischentext + GetZeichenVon(GTWert);
    Zeichen := GetZeichenVon(GTWert);

    Geheimtext := Geheimtext + Zeichen;


  (*1. FOR-END*)
  end;

end;
Der Entschlüsselungsalgorithmus sieht bisher so aus kann aber auch komplett falsch sein.
Fall jmd. noch zusätzliche Infos brauch einfach fragen ich stelle sie dann rein!


Delphi-Quellcode:
procedure TKryptobox.Entschluesseln;
(* -------------------------------------------------------------------- *)
var
  i,k,
  KTWert,
  GTWert, KeyL : integer;
  Zeichen : char;

begin
  Klartext := '';
  Vorbehandeln(Geheimtext);
  Vorbehandeln(Schluessel);
    Zwischentext := Geheimtext;
  // hier kommt Ihr Entschluesselungsalgotithmus hin!
 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;

    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;
  (*Klartext := Zwischentext;


  Zeichen := Geheimtext[i];
GTWert := GetStellenwertVon(Zeichen);
KeyL := Length(Schluessel);
KTWert := (GTWert - KeyL +2700 - getStellenWertvon(Schluessel[3])) mod 27;
Klartext := Klartext + GetZeichenVon(KTWert); *)


 //Zeichen := Geheimtext[i];
 //GTWert := GetStellenwertVon(Zeichen);
 //KTWert := (GTWert -GetStellenwertvon(Schluessel[1+(i-1) mod length(Schluessel)]) +2700) mod 27;
 //Klartext := Klartext + Getzeichenvon(KTWert);
 end;
end;
alles bissel unordentlich weil ich mich wahrscheinlich total verritten habe

Schonmal danke im vorraus

hier nochmal die GetStellenWertVon-Function:

Delphi-Quellcode:
function TKryptoBox.GetStellenWertVon (Zeichen : char) : integer;
(* -------------------------------------------------------------------- *)
begin
   case Zeichen of
    'A'..'Z' : Result := ord(Zeichen) - 65 ;
     ' '     : Result := 26;
   end;
end;



Mfg Noris
<a href="http://www.coreandgaming.de"><img src="http://coreandgaming.de/AdminImages/mano.png" border="0" alt="Core N' Gaming" /></a>

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

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

AW: Entschluesselungsalgorithmus

  Alt 26. Okt 2010, 15:52
Soooo ganz hab ich deinen Algorithmus noch nicht verstanden. Vielleicht könntest du im Code ein paar Kommentare machen, was du willst, was passieren soll.
Und was macht die Anfrage GetStellenwertVon(...) ?


Dann hätte ich noch die Vermutung, dass es Probleme bei deiner mod-Rechnung gibt.
Wenn du zum Beispiel rechnest:
70 mod 27 = 16
und
97 mod 27 = 16


Bei 70 und 97 kommt beides mal 16 raus, was bedeutet, dass das verschlüsselte Zeichen bei beiden das Gleiche ist.
Daraus folgt dann ein Problem beim Entschlüsseln, weil das Programm ja nicht wissen kann, ob da vorher eine 70 oder 97 war.


Wenn es dir nicht so darum geht einen eigenen Algorithmus zu entwickeln, kann ich dir empfehlen, mal zu versuchen die Vigenère-Verschlüsselung umzusetzen.




Edit:
Hui, mein 100. Beitrag
  Mit Zitat antworten Zitat
Noris

Registriert seit: 17. Nov 2009
Ort: Berlin
29 Beiträge
 
Delphi 6 Personal
 
#3

AW: Entschluesselungsalgorithmus

  Alt 26. Okt 2010, 16:26
Und wie wäre es möglich das problem mit dem "mod" zu lösen?

hier die GetStellenWertVon-function:

Delphi-Quellcode:
function TKryptoBox.GetStellenWertVon (Zeichen : char) : integer;
(* -------------------------------------------------------------------- *)
begin
   case Zeichen of
    'A'..'Z' : Result := ord(Zeichen) - 65 ;
     ' '     : Result := 26;
   end;
end;
<a href="http://www.coreandgaming.de"><img src="http://coreandgaming.de/AdminImages/mano.png" border="0" alt="Core N' Gaming" /></a>

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

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

AW: Entschluesselungsalgorithmus

  Alt 26. Okt 2010, 17: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 17:33 Uhr)
  Mit Zitat antworten Zitat
Noris

Registriert seit: 17. Nov 2009
Ort: Berlin
29 Beiträge
 
Delphi 6 Personal
 
#5

AW: Entschluesselungsalgorithmus

  Alt 28. Okt 2010, 15:23
So ich habe mal das ganze Programm als anhang hinzugefügt so dass ihr es euch runterladen könnt weil es glaube ich ein wenig zu unübersichtlich werden würde wenn ich da jede sache einzel als [delphi]-code posten würde. Also guckt es euch mal an. Ich hoffe ihr könnt mir helfen.
Angehängte Dateien
Dateityp: zip Entschluesselung.zip (230,1 KB, 8x aufgerufen)
<a href="http://www.coreandgaming.de"><img src="http://coreandgaming.de/AdminImages/mano.png" border="0" alt="Core N' Gaming" /></a>
  Mit Zitat antworten Zitat
fui-tak

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

AW: Entschluesselungsalgorithmus

  Alt 28. Okt 2010, 16:15
Ahh, die Information hat mir gefehlt: es geht um die Cäsar-Verschlüsselung

Ich geb dir dazu mal ein paar Tipps. Code kann ich dir jetzt nicht aufschreiben, weil es sich anscheinend um eine Hausaufgabe handelt.

Also dein Code kommt mir persöhnlich nicht besonders Cäsar-nah vor. Geht es wirklich um Cäsar wenn dein Schlüssel ein String ist? Bei Cäsar ist der Schlüssel nämlich eine Zahl.

Hier mal etwas Pseudo-Code, wie man Cäsar machen könnte:

Code:
Text vorbereiten
Schlüssel vom Typ integer

0 < i <= Länge des Klartextes
begin
   Ord(Klartext an der Stelle i) mit dem Schlüssel Addieren (Alphabeth wird soweit verschoben, wie es der Schlüssel angibt)
   Überlegen, was passieren muss, wenn der addierte Wert größer als der Ord()-Wert von Z ist
   Addierten Wert wieder zum Buchstaben machen mit Chr(...) und beim Geheimtext anhängen
end;
Und Entschlüsseln ist jetzt ganz einfach ...
  Mit Zitat antworten Zitat
Noris

Registriert seit: 17. Nov 2009
Ort: Berlin
29 Beiträge
 
Delphi 6 Personal
 
#7

AW: Entschluesselungsalgorithmus

  Alt 28. Okt 2010, 18:43
Nein es ist keine reine Cäsar-Verschluesselung. Es kommt nämlich dazu dass die Buchstaben des SChluesselwortes mit in die Verschluesselung mit einbezogen werden...
Hausaufgabe?
Nein eigentlich nicht und ich würde mich auch wundern wenn heutzutage ein lehrer Schülern noch diese Sprache beibringt (nichts gegen die Sprache ).

Mfg Noris
<a href="http://www.coreandgaming.de"><img src="http://coreandgaming.de/AdminImages/mano.png" border="0" alt="Core N' Gaming" /></a>
  Mit Zitat antworten Zitat
paperboy

Registriert seit: 10. Jun 2009
71 Beiträge
 
RAD-Studio 2009 Arc
 
#8

AW: Entschluesselungsalgorithmus

  Alt 28. Okt 2010, 19:13
Nein eigentlich nicht und ich würde mich auch wundern wenn heutzutage ein lehrer Schülern noch diese Sprache beibringt (nichts gegen die Sprache ).
aus der Unit uFenster: "Siegfried Spolwig, OSZ Handel"

kurz google bemüht und man findet: http://www.oszhandel.de/gymnasium/faecher/informatik/

will dir ja nix unterstellen aber sieht schon etwas verdächtig aus

lg paperboy
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Entschluesselungsalgorithmus

  Alt 28. Okt 2010, 19:18
Ähem: Und hier steht die Aufgabe.
Gib doch wenigstens zu, dass es sich um eine Hausaufgabe handelt
  Mit Zitat antworten Zitat
Noris

Registriert seit: 17. Nov 2009
Ort: Berlin
29 Beiträge
 
Delphi 6 Personal
 
#10

AW: Entschluesselungsalgorithmus

  Alt 28. Okt 2010, 19:19
erstmal vielen dank an dich.
Leider kommt da noch was :S
Ich bin ein wenig weiter gekommen. Das Problem ist blossdas die Buchstaben die im Schlüssel ungerade sind nicht dekodiert werden. ich würde mich über eine schnelle Antwort.
Ich hänge die neuste Version wieder als Anhang an.

Mfg Noris

PS: Zum neuen post von dir: Ich lerne Delphi mit einem Tutorial bzw. einem Buch was aber nicht so gut ist. Dort ist auch so eine Aufgabe zu finden.
Aus dem Alter bin ich "leider" schon draussen. Aber danke, mal gucken vlt. lässt sich dort etwas brauchbares finden

Mfg
Angehängte Dateien
Dateityp: zip Codieren(2).zip (432,5 KB, 6x aufgerufen)
<a href="http://www.coreandgaming.de"><img src="http://coreandgaming.de/AdminImages/mano.png" border="0" alt="Core N' Gaming" /></a>
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:28 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