Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Verschlüsselung
pbczero - Sa 28.05.05 14:29
Titel: Verschlüsselung
Hallo, ich möchte gerne mit hilfe eines schlüsselwortes ein alphabet erstellen, damit man dann nachher die buchstaben des normalen alphabets mit dem entsprechenden des generierten vertauschen kann.
leider klappt es noch nicht so richtig.ich wollte das alphabet erstmal in eine listbox schreiben, um es zu überprüfen.
es soll z.b. bei dem wort "ern" das alphabet
e r n a b c d f....usw. entstehen, d.h. nach dem verschlüsselungswort soll das alphabet drangehängt werden, die schon verwendeten buchstaben jedoch ausgelassen.
folgendes habe ich versucht:
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:
| For a:=1 to length(edit1.text) do
begin Code[a]:=edit1.text[a]; end;
z:=false; f:=length(edit1.text)+1; For c:=ORD('a') to ORD('z') do begin For b:=1 to length(Code) do begin If c=ORD(Code[b]) then z:=true; end;
If z=false then begin Code[f]:=CHR(c); f:=f+1; end; end;
For k:=1 to 26 do listbox1.items.add(Code[k]); end; |
kann mir jemand einen tipp geben, wo der fehler liegt???
AXMD - Sa 28.05.05 14:51
Kannst du mir einen Tipp geben, wozu das gut sein soll? Bei 3 Buchstaben hast du fast 800% Redundanz - und das zu entschlüsseln dürfte wohl in nichtmal 10 Sekunden möglich sein. Stürz dich lieber auf Caesar oder Viginère - die sind um einiges sicherer und effeizienter als dein "Algorithmus"
AXMD
pbczero - Sa 28.05.05 15:01
ja ich kann dir nen tipp geben....ist auch einer der leicht zu verstehen ist ;-)
Ich fände auch eine andere Methode besser
ABER
der lehrer sitzt nunmal am längeren Hebel...und wenn er es so haben will...tja was soll ich sagen, dann muss ichs halt so machen...und ich weiß auch, dass ich ein noob im programmieren bin....aber immerhin glaub ich, dass der ansatz eigentlich funktionieren müsste
Fabian W. - Sa 28.05.05 15:07
Das dürfte ungefähr das sein was du suchst:
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:
| const original = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ'+ 'abcdefghijklmnopqrstuvwxyzÄÖÜäöüß'; schluessel = 'MKrLcDXSfghäUöHVWjIZlNYvÄdx' + 'an qsoPbAEBTFÖCyzükÜGmOßJweQRiptu';
procedure Tform1.Button1Click(Sender: TObject); var Eingabe, Ausgabe : String; x,laenge,position : integer; begin Eingabe := Memo1.Text; Ausgabe := ''; laenge := Length(Eingabe); for x:= 1 to laenge do begin position := Pos(Eingabe[x],original); if position <> 0 then Ausgabe := Ausgabe + schluessel[position] else Ausgabe := Ausgabe + Eingabe[x]; end; Memo2.Text := Ausgabe; end; |
Alles was du jetzt noch machen musst, is aus der Const ne Variable zu machen, und die bei jedem neuen wort nach deinen Wünschen umformen.
AXMD - Sa 28.05.05 15:09
Gut, von mir aus, aber den Code wird sich niemand ansehen, wenn er so formatiert ist wie jetzt und keine Kommentare hat. Ich hätte das so gelöst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| var s: String; i: Integer; text: set of Char; begin s := UpperCase(Edit1.Text); text := []; for i := 1 to Length(s) do text := text + [s[i]];
for i := Ord('A') to Ord('Z') do begin if not(Chr(i) in text) then s := s + Chr(i); end;
Edit2.Text := s; end; |
AXMD
pbczero - Sa 28.05.05 15:20
ist irgendwie logisch, aber wenn ich das proggi damit starte erhalte ich als Code:
ERNBDGIKLOSTUWXYZ
und da feht doch die Hälfte...
AXMD - Sa 28.05.05 15:30
Was steht in Edit1?
AXMD
pbczero - Sa 28.05.05 15:46
ern oder ERN
AXMD - Sa 28.05.05 15:48
Hab im oberen Quelltext eine Zeile hinzugefügt. Probier's mal so.
AXMD
pbczero - Sa 28.05.05 16:21
danke!!!, nun klappt es....damit werd ich dann wohl meinen lehrer zufriedenstellen...also wenns fertig ist
AXMD - Sa 28.05.05 16:26
pbczero hat folgendes geschrieben: |
danke!!!, nun klappt es....damit werd ich dann wohl meinen lehrer zufriedenstellen...also wenns fertig ist |
Du solltest es aber verstehen und nicht nur kopieren. Deshalb frag lieber, wenn du Fragen hast. Weil wenn dein Lehrer dahinterkommt, dass du das nicht verstehst, sondern nur kopiert hast, sieht's schlecht um deine Note aus.
AXMD
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!