| Autor |
Beitrag |
Daniel_100
      
Beiträge: 63
Win XP
D3 Prof, D6 Enterprise
|
Verfasst: So 02.03.03 01:24
Hallo!
In meinem Programm, bei dem man sich einloggen muss, wurde das Passwort in einer txt-Datei gespeichert: Dort steht jetzt aber das "echte" Passwort. Wie kann ich es so verändern, dass jedes Zeichen um z.B. 30 Stellen nach vorne verlegt wird, sodass man es nicht mehr das Originale ist.
Ich hoffe, ihr versteht, was ich meine...
Danke
|
|
D0P3 F!$H
Gast
Erhaltene Danke: 1
|
Verfasst: So 02.03.03 02:20
Ich gehe mal davon aus, dass dein Passwort ein String ist und das er irgendwo in einer Variable gespeichert wird.
Nun kannst du folgendermaßen das Passwort um 10 Stellen nach vorne "verschlüsseln": Quelltext 1: 2: 3: 4: 5: 6: 7:
| var Passwort, Code: String; i: Integer; Passwort := 'Hallo'; Code := Passwort; for i := 1 to Length(Passwort) do begin Code[i] := Chr(Ord(Passwort[i]) + 10); end; Memo1.Text := Code; |
Meintest du sowas in der Art?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 02.03.03 05:53
Na ja. Sowas bekommt sogar meine Oma raus. XOR ist allerdings auch nicht besser. Such dir mal einen ordentlichen Verschlüsselungs-Algorhythmus. Du mußt aber auch darauf achten dass er auch ASCII-Text verschlüssel kann. Beim Verschieben oder mit XOR kann es dior passieren, dass zeichen erzeugt werden die nicht mehr darstellbar sind und dann bekommst beim Zurückverwandeln Probleme.
|
|
D0P3 F!$H
Gast
Erhaltene Danke: 1
|
Verfasst: So 02.03.03 12:25
Schon klar, dass dieser Code leicht zu knacken ist.
Aber schon mit einem einfachen Algorithmus wärs schon ein bisschen komplizierter.
Beispielsweise könnte man ja ein Array of Integer nehmen, das 26 Zahl hat. Jede Zahl steht für die Anzahl der zu erhöhenden Chars.
So in etwa: Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var Algo: Array[1 .. 5] of Integer; Passwort, Code: String; i: Integer; ... Passwort := 'Hallo'; Algo[1] := 7; Algo[2] := 25; Algo[3] := 2; Algo[4] := 68; Algo[5] := 39;
Code := Passwort; for i := 1 to Length(Passwort) do Code[i] := Chr(Ord(Passwort[i]) + Algo[i]); Memo1.Text := Code; |
Das wär dann ja schon ein bisschen schwieriger, woll? 
|
|
torstenheinze
      
Beiträge: 461
|
Verfasst: So 02.03.03 13:07
wenn ich dinge verschlüssele, dann vermische ich mehrere algoryhtmen miteinander, und manche lasse ich 100.000 mal durchführen.
Quelltext 1: 2: 3: 4: 5: 6: 7:
| Procedure EnDeCrypt(Var InString: String); Var x: Byte; Begin RandSeed := Length(InString); FOR x := 1 To Length(InString) Do InString[x] := Chr(Ord(InString[x]) Xor (Random(128) Or 128)); End; |
bei diesem code könnte man auch beispielsweise statt der 128 eine 3 hinschreiben, die sich jenachdem wie lang der text ist, immer um eine bestimmte zahl erhöht.
|
|
D0P3 F!$H
Gast
Erhaltene Danke: 1
|
Verfasst: So 02.03.03 14:19
@ torstenheinze: Ist das deine gesamte Prozedur? Wenn ja, was bringt die Zeile RandSeed := Length(InString); Versteh ich nicht ganz, weil du die ja nie verwendest ...
|
|
torstenheinze
      
Beiträge: 461
|
Verfasst: So 02.03.03 16:31
nein, das ist nur ein teil von einer verschlüsselungsprocedure. ich füge immer mehrere verschiedene zusammen. außerdem wollt ich doch nur zeigen, das man auch standard routinen enwas verändern sollte
meine verschlüsselungsroutine besteht meistens aus 3-10 verschiedenen aneinandergereihten routinen
|
|
D0P3 F!$H
Gast
Erhaltene Danke: 1
|
Verfasst: So 02.03.03 18:01
Aso ... Ich hatte es so verstanden, dass deine gepostete Prozedur alles sei, was du zum Verschlüsseln benutzt.
|
|
torstenheinze
      
Beiträge: 461
|
Verfasst: So 02.03.03 18:07
das wäre ein bischen zu wenig 
|
|
D0P3 F!$H
Gast
Erhaltene Danke: 1
|
Verfasst: So 02.03.03 18:32
Da hast du auch wieder recht.
Nur da ich mich damit nicht wirklich auskenne, weiss ich auch nicht, was deine 3, 4 Programmzeilen bewirken ...
Moderiert von Tino: Absatz entfernt.
|
|