Autor Beitrag
pbczero
Hält's aus hier
Beiträge: 15

WIN 2000
Delphi 7
BeitragVerfasst: Sa 28.05.05 14:29 
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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 15

WIN 2000
Delphi 7
BeitragVerfasst: 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
majolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334

Ubuntu 8.04, WinXP Prof.
D1, D6Pers, D7 Prof., D8 Prof., D2005 Pers
BeitragVerfasst: Sa 28.05.05 15:05 
Schau dir doch mal den RSA-Algorithmus an. Der verschlüsselt recht sicher.
www.thg.aa.bw.schule.de/Notizbuch/rsa/ oder einfach mal googeln.

_________________
Gruß
majolo
Fabian W.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Sa 28.05.05 15:07 
Das dürfte ungefähr das sein was du suchst:

ausblenden 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); //verschlüsseln
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
var
  s: String//Text
  i: Integer; //Zählvariable
  text: set of Char; //Menge der im Text vorhandenen Zeichen
begin
  s := UpperCase(Edit1.Text); //Nur Großbuchstaben (kannst du ja ändern falls verlangt)

  text := []; //Initialisieren (EDIT: vergessen, sorry, hab atm kein Delphi)

  for i := 1 to Length(s) do //Vorhandene Zeichen der Menge hinzufügen
    text := text + [s[i]];

  for i := Ord('A'to Ord('Z'do begin //Alle Buchstaben durchgehen
    if not(Chr(i) in text) then //Wenn Zeichen noch nicht in der Menge vorkommt...
      s := s + Chr(i); //...an String anhängen
    end;

  Edit2.Text := s; //Ausgeben
end;


AXMD


Zuletzt bearbeitet von AXMD am Sa 28.05.05 15:31, insgesamt 1-mal bearbeitet
pbczero Threadstarter
Hält's aus hier
Beiträge: 15

WIN 2000
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 28.05.05 15:30 
Was steht in Edit1?

AXMD
pbczero Threadstarter
Hält's aus hier
Beiträge: 15

WIN 2000
Delphi 7
BeitragVerfasst: Sa 28.05.05 15:46 
ern oder ERN
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 28.05.05 15:48 
Hab im oberen Quelltext eine Zeile hinzugefügt. Probier's mal so.

AXMD
pbczero Threadstarter
Hält's aus hier
Beiträge: 15

WIN 2000
Delphi 7
BeitragVerfasst: Sa 28.05.05 16:21 
danke!!!, nun klappt es....damit werd ich dann wohl meinen lehrer zufriedenstellen...also wenns fertig ist
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 28.05.05 16:26 
user profile iconpbczero 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