Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Problem bei Vigenere-Verschlüsselung (https://www.delphipraxis.net/166439-problem-bei-vigenere-verschluesselung.html)

Matrix275 13. Feb 2012 20:35

Problem bei Vigenere-Verschlüsselung
 
Hallo,

Wir sollten in der Schule ein Programm mit Delphi zur Caesar- und Vigenere-Verschlüsselung schreiben. Meine Caesar-Verschlüsselung funktioniert einwandfrei, aber bei Vigenere kann ich meinen Fehler nicht finden. Ich habe mindestens 30 Minuten versucht in den Programmzeilen irgendwo den Fehler zu finden, habe den Code schon mehrfach umgeändert, jedoch ohne Erfolg. Ich vermute mal es liegt an den strings oder arrays, die ich benutzt habe.

Hier ist der Code von der fehlerhaften Prozedur:

Delphi-Quellcode:
procedure TForm1.Klartextverschlsseln1Click(Sender: TObject);
var a,b,key,keyadd: String;
     i,j,l,m,id1,id2,k,h:Integer;
     codeid:array of Integer;
begin
b:='';
m:=0;
key:='COOL';
keyadd:=key;
Memo1.Lines.Clear;
  for i := 0 to Memo2.Lines.Count do
    begin
      b:='';
      a := Memo2.Lines[i];
      for j := 1 to length(a) do
        begin
          key:=key+keyadd;
          m:=m+1;
        end;
    end;
l:=i*59+j;
key:= Copy(key, 1, l);
for k := 0 to (length(key)-1) do
  begin
    codeid[k]:=ord(key[k])-65;
  end;
for h:=0 to length(a)-1 do
  begin
    b:=b+chr((ord(codeid[h]))+(ord(a[h])));
  end;
end;
Ich würde mich sehr freuen, wenn mir jemand den Fehler und die dazugehörige Korrektur zeigen könnte.

MfG Matrix275

Coffeecoder 13. Feb 2012 20:42

AW: Problem bei Vigenere-Verschlüsselung
 
Hi, erstmal Willkommen in der :dp: :)
Ich kann mich jetzt täuschen, aber Vigenère sollte nur mit Buchstaben funktionnieren.
Bitte besuche auch mal die beiden Links: Delphi-Treff und diesen hier.
Beide Links haben einige Erläuterungen zu diesem recht einfachen und in zwischen unsicheren Verschlüsselungsverfahren.
Mfg,

Mathematiker 26. Mär 2013 19:55

AW: Problem bei Vigenere-Verschlüsselung
 
Hallo,
Zitat:

Zitat von Lolf10 (Beitrag 1209020)
SCHICKT MIR DEN QUELLCODE PER E-MAIL BITTE!!

Vergiss es! :evil:
Setze Dich gefälligst hin und programmiere erst einmal selbst etwas.
Wenn Fehler auftreten, kannst Du ja gezielt fragen.

Die DP ist kein Selbstbedienungsladen!

Beste Grüße
Mathematiker

Namenloser 26. Mär 2013 20:48

AW: Problem bei Vigenere-Verschlüsselung
 
Zitat:

Zitat von Mathematiker (Beitrag 1209021)
Die DP ist kein Selbstbedienungsladen!

Oder besser gesagt: Die DP ist ein Selbstbedienungsladen, kein Bedienungsladen :thumb:

QuickAndDirty 26. Mär 2013 20:48

AW: Problem bei Vigenere-Verschlüsselung
 
Zitat:

Zitat von lolf10 (Beitrag 1209020)
hey matrix275!

Ich muss auch in der schule ein programm mit lazarus zur cesar verschlüsselung programmieren.
Ich habe überhaupt keinen plan wie die einzelnen buchstaben erkannt werden sollen.


Bitte helft mir!

Schickt mir den quellcode per e-mail bitte!!

Danke

9/10

QuickAndDirty 26. Mär 2013 20:50

AW: Problem bei Vigenere-Verschlüsselung
 
Zitat:

Zitat von NamenLozer (Beitrag 1209030)
Zitat:

Zitat von Mathematiker (Beitrag 1209021)
Die DP ist kein Selbstbedienungsladen!

Oder besser gesagt: Die DP ist ein Selbstbedienungsladen, kein Bedienungsladen :thumb:

wtf
stolz auf den miesen Service ???

*trollface.jpg*

Mathematiker 26. Mär 2013 21:52

AW: Problem bei Vigenere-Verschlüsselung
 
Hallo,
bevor mir mieser Service vorgeworfen wird, gibt's eine von mir im Netz gefundene Lösung. Nach Lazarus muss es einfach noch übertragen werden :wink::
Code:
main(int n,char**a){for(n=0;putchar(a[2][n]?(a[2][n]%32+(**a%2*2-1)*
      (a[1][n++%(a[2] -a[1] -1)]%32-1)+25)%26+97:10)-10;);}
Beste Grüße
Mathematiker

Quelle: http://www.iwriteiam.nl/SigProgC.html

Klaus01 27. Mär 2013 07:51

AW: Problem bei Vigenere-Verschlüsselung
 
.. setze Dich an Deinen Schreibtisch, nimm Dir einen Stift und Papier.
Schreibe auf was für die Vignere Verschlüsselung benötigt wird.
Schreibe die Schritte auf wie Klartext in Cyphertext gewandelt wird.

Transferiere die Schritte und Voraussetzungen in einen Source-Code Deiner Wahl.

Grüße
Klaus

Mathematiker 27. Mär 2013 07:56

AW: Problem bei Vigenere-Verschlüsselung
 
Zitat:

Zitat von Klaus01 (Beitrag 1209057)
.. setze Dich an Deinen Schreibtisch, nimm Dir einen Stift und Papier.

:thumb::thumb::thumb:

Beste Grüße
Mathematiker

Phoenix 27. Mär 2013 08:04

AW: Problem bei Vigenere-Verschlüsselung
 
Zitat:

Zitat von Lolf10 (Beitrag 1209055)
BITTE SCHICKT MIR JEMAND...

Ein ganz klares: NEIN :warn:

Wir sind kein Hausaufgabenforum. Wenn Du hier nochmal so ne abstruse Forderung postest machen wir den Thread einfach kommentarlos dicht / löschen ihn und lassen Dich komplett ohne Hilfe hier sitzen.

Stand jetzt hast Du noch eine Klitzekleine Chance, Hilfe zur Selbsthilfe bei Deinem eigentlichen Problem zu bekommen.

Was anderes wirst Du hier in der Delphi-PRAXiS aber nicht bekommen (ausser eine Menge Ärger), also such Dir entweder in einem anderen Forum irgendwelche Idioten die Deine Probleme für Dich lösen, oder zeig Eigeninitiative, versuche Dein Problem selber zu lösen und dafür wirst Du hier alle Unterstützung bekommen die nötig ist.

Klaus01 27. Mär 2013 11:34

AW: Problem bei Vigenere-Verschlüsselung
 
Zitat:

Zitat von Lolf10 (Beitrag 1209088)
Fahre heute weg und komme erst Montag wieder.:|:|

Fährst Du selber - oder lässt Du fahren.
Im zweiten Fall hättest Du Zeit für die Sache mit dem Papier und Stift.
Vorher kannst Du Dir ja noch die Wiki-Seite ausdrucken, diese kannst Du dann als
Anleitung nehmen.

Grüße
Klaus

ibp 27. Mär 2013 14:11

AW: Problem bei Vigenere-Verschlüsselung
 
Nachdem sich nun alle über Lolf10 ausgelassen haben, scheint der TE Matrix275 hier irgendwie auf der Strecke zu bleiben.
Zitat:

Zitat von Matrix275 (Beitrag 1150903)
...bei Vigenere kann ich meinen Fehler nicht finden...

kannst du denn genauer eingrenzen oder besser beschreiben was nicht funktioniert?

p80286 27. Mär 2013 14:47

AW: Problem bei Vigenere-Verschlüsselung
 
Zitat:

Zitat von ibp (Beitrag 1209114)
Nachdem sich nun alle über Lolf10 ausgelassen haben, scheint der TE Matrix275 hier irgendwie auf der Strecke zu bleiben.

Und das seit einem Jahr.

Gruß
K-H

ibp 27. Mär 2013 14:51

AW: Problem bei Vigenere-Verschlüsselung
 
:duck:

p80286 27. Mär 2013 15:13

AW: Problem bei Vigenere-Verschlüsselung
 
By the way,
habt Ihr eine Idee für eine gute C/C++ Seite?
Ich würde den Vorschlag von Mathematiker gerne einmal richtig verstehen.

Gruß
K-H

Mathematiker 27. Mär 2013 16:25

AW: Problem bei Vigenere-Verschlüsselung
 
Hallo K-H,
Zitat:

Zitat von p80286 (Beitrag 1209125)
Ich würde den Vorschlag von Mathematiker gerne einmal richtig verstehen.

Wie Du der genannten Internetseite entnehmen kannst, handelt es sich bei den dort enthaltenen Programmen um vorsetzlich "verschlüsselte" Quelltexte, die möglichst keiner verstehen soll. Mach' Dir nicht die Mühe. Das ist kaum zu verstehen.
Mein "Lieblings-C-Programm" von Dik Winter und Achim Flammenkamp ist
Code:
a[52514],b,c=52514,d,e,f=1e4,g,h;
main(){for(;b=c-=14;h=printf("%04d", e+d/f))
  for(e=d%=f;g=--b*2;d/=g)d=d*b+f*(h?a[b]:f/5),a[b]=d%--g;}
Das Ding berechnet 52514 Stellen von PI, sagt man :shock:
Ich hatte den Vigenere-Text auch nur deswegen gepostet, da ich meinen Ärger :evil: über die Frechheit von Lolf10 abreagieren wollte.

Zitat:

Zitat von ibp (Beitrag 1209114)
... scheint der TE Matrix275 hier irgendwie auf der Strecke zu bleiben.

Obwohl Matrix275 vor sehr langer Zeit keine Antwort bekam, versuche ich es kurz.
Ausgehend von der Idee den Text aus Memo2 mit Vigenere zu verschlüsseln und nach Memo1 zu kopieren, geht es relativ einfach:
Delphi-Quellcode:
var a,b,key: String;
    i,z:Integer;
begin
    key:='COOL'; //evtl. anderes Codewort
    //Codewort wird mindestens auf die Länge des Ausgangstextes gebracht
    while length(key)< length(memo2.text) do key:=key+key;

    a:=memo2.text;
    b:='';
    for i:=1 to length(a) do
    begin
      //Vigenere ist eigentlich nur für Großbuchstaben A bis Z vorgesehen
      if upcase(a[i]) in ['A'..'Z'] then
      begin
         //um den Wert des Schlüssels verschieben
         z:=ord(upcase(a[i]))+ord(key[i])-64;
         //Überlauf abfangen bei ASCII-Code > 90
         if z>90 then z:=z-26;
         b:=b+chr(z);
      end
      else b:=b+a[i]; //andere Zeichen werden nicht transformiert, u.a. auch #13 und #10
    end;
    memo1.text:=b;
end;
Ich habe jetzt nicht in der DP gesucht. Ich vermute, es wird weitere, auch bessere Lösungen geben.

Beste Grüße
Mathematiker

p80286 27. Mär 2013 17:27

AW: Problem bei Vigenere-Verschlüsselung
 
Na die Betonung lag auf richtig da geht es irgendwo um das Blank und da ist auch die Verschiebung des Alpabets mit eingebaut, bloß meine C-Kenntnisse reichen da nicht weit genug um jedes Detail zu berücksichtigen.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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