Entwickler-Ecke
Sonstiges (Delphi) - Ein Key generator Programmieren
jackie21 - Mi 27.07.05 01:49
Titel: Ein Key generator Programmieren
hi
Ich wollte mal wissen wie das in Delphi funktioniert ein eigener Key Generator zu Programmieren, also ich habe ein DVD Datenbank geschrieben, wo man sich nach ein paar Tagen Registrieren muss, und dazu möchte ich einen Key generator für mein DVD Datenbank schreiben.
Wenn ich in Edit1 z.B. Ein Name eingebe, dann soll jede Buchstabe generiert werden und in Panel1 angezeigt werden, und diese generierte Key soll mein Datenbank dann anehmen können.
Gibt es vieleicht Tutorials oder sowas in der art, wo man das lernen kann, ich bin euch sehr dankbar wenn ihr mir ein paar tips geben könnt wie das genau funktioniert, ich danke euch schonmal :wink:
jackie21
Moderiert von
Gausi: Topic aus Programmierwerkzeuge verschoben am Mi 03.08.2005 um 08:47
DaRkFiRe - Mi 27.07.05 03:36
Was Du brauchst - die Funktion ORD und FORMAT, vielleicht noch CHR.
Der Rest ist pure Mathematik.
Denk Dir eine Funktion aus.
Dabei ist jede Funktion denkbar, denn Du hast Definitions- (Name) und Wertebereich (Serial) auf dem Zielrechner.
Kannst einfach die Zeichen im ASCII Code verschieben. y=x+c. Zu einfach.
Kannst einfach die Zeichen mit einem vordefinierten Code XOR nehmen. y=x XOR c. Zu einfach.
Kannst einfach die Summe der ASCII Codes nehmen und mit einer festen Zahl multiplizieren, das Ergebnis = 32Bit-HexCode.
etc etc
Es gibt soviele Möglichkeiten. Lass Deiner Fantasie freien Lauf!
Jedenfalls musst Du es so sehen: aus einem Namen (A) wird eine Serial (X) im Keygen. Die Software selbst besitzt ebenso diesen Keygen implementiert (als Code). Sie generiert aus dem Namen (B) ebenso eine Serial (Y). Aus der Gleichheit der Algorithmen folgt folgende Äquivalenz: wenn A = B, dann ist auch X = Y - Serial korrekt!
en!gma - Mi 27.07.05 10:26
mal ein kleines beispiel
habs nicht getestet:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| function erstelleKey(benutzername:string):string; var z : string; i : integer; begin If Length(benutzername) > 0 then begin For I := 1 to Length(benutzername) do z := z + IntToHex(Ord(benutzername) + $82); result := z + benutzername[0] end else result := 'eingabe darf nciht leer sein'; end; |
jackie21 - Mi 27.07.05 13:09
Ich danke dir, aber wenn ich dieses Code jetzt in mein Projekt ausprobieren will dann erhalte ich vom Compiler diese Fehlermeldung:
[Error] Unit1.pas(32): Incompatible types
[Error] Unit1.pas(34): Element 0 inaccessible - use 'Length' or 'SetLength'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
da ist irgandwo ein kleiner fehler drinn, ich weiss nur nicht wo, könntest du mir bitte schreiben wo genau der fehler ist, ich danke dir schonmal für die antwort :wink:
jackie21
hallo - Mi 27.07.05 13:38
Anstatt [0] musst du [1] hernehmen! Dann ist es accessible!
uall@ogc - Mi 27.07.05 13:46
und bei inttohex fehlt nen 2. parameter, da musst du nen ,2 machen
inttohex(irgendwas,2)
jackie21 - Mi 27.07.05 15:27
das funktioniert nicht bei IntToHex, könntest du mir vieleicht schreiben wie du das meinst, ich danke dir schonmal :wink:
jackie21
zemy - Mi 27.07.05 15:59
Mal ne ganz dumme Idee...
Delphi-Quelltext
1:
| Serial:= MD5 ( Name + '_dummyText'); |
^^ Bräuchteste nur noch ne MD5-Funktion (oder irgend ein anderer Hashalgorythmus..)
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.
jackie21 - Mi 27.07.05 16:16
ich kenne mich zwar noch nicht so perfekt in Delphi aus, daher wollte ich fragen ob ihr mir vieleicht den Komplette Quelltext posten könnt, das wenn ich auf Button1 Klicke, dann soll den Name von Edit1.Text als generierte Key in Panel1.Caption angezeigt werden, ich bin euch sehr dankbar wenn ihr das machen könnt, ich danke euch schonmal :cry:
jackie21
DaRkFiRe - Mi 27.07.05 16:26
Also wer ein bisschen Ahnung hat, der sieht: oh, 32 Zeichen, davon auch noch Hexcodes - könnte MD5 sein - hasht, und schon hat er ne Serial - neee, zu einfach!!!
zemy - Do 28.07.05 15:03
Deshalb noch der Dummytext. Müsste man nur noch ein bissel eleganter anstellen. Stet ja sonst fast im Klartext in der Exe :D Kannst ja auch nur die ersten 16 (10, 8, ... ) Zeichen nehmen oder noch 'n XOR drüber jagen. Dann ist der Hash nicht mehr zu erkennen.
PS: Sorry wegen Delphitags, war eigentlich nur als Pseudocode gedacht...
jaenicke - Do 28.07.05 15:15
jackie21 hat folgendes geschrieben: |
ich kenne mich zwar noch nicht so perfekt in Delphi aus, daher wollte ich fragen ob ihr mir vieleicht den Komplette Quelltext posten könnt, das wenn ich auf Button1 Klicke, dann soll den Name von Edit1.Text als generierte Key in Panel1.Caption angezeigt werden, ich bin euch sehr dankbar wenn ihr das machen könnt, ich danke euch schonmal :cry: |
Das solltest du schon selbst versuchen! Wenn du wo nicht weiterkommst, können wir dir helfen, aber kompletten Source? Das ist nicht Sinn des Forums.
Und vor allem wäre es wohl auch kaum sinnvoll, oder?
Jeder, der diesen Post deinem Programm zuordnet, weiß sofort, wie dein Key erzeugt wird.
Wie bereits weiter oben angesprochen, da musst du dir eine mathematische Methode überlegen, wie du die Verschlüsselung durchführst.
Es gibt zum Beispiel XOR, wenn man das zweimal mit nem Schlüssel macht, kommt wieder dasselbe raus. Aber dazu steht auch einiges im Netz.
Ein kleiner Code-Schnipsel, wie sowas grundsätzlich geht, von mir aus, aber fertig ist das nicht:
Delphi-Quelltext
1: 2: 3: 4:
| for i := 0 to Length(tmpString) do begin Result[i] := Chr(Ord(tmpString[i]) xor Key[i]); end; |
Sollte so ungefähr gehen. Dabei muss Key genauso lang wie der String sein und array of Byte sein.
Das sollte in beide Richtungen gehen.
ShiKai - Mi 03.08.05 01:43
meinst du nicht, dass ein ein one time pad ein bissel zuviel des guten
ist? :lol:
ich mache das meistens so, dass ich nicht nur nen namen von dem user
haben will, sondern auch eine e-mail-addy...
damit hat man dann also gleich 2 daten, die man nutzen kann...
dann kannt du ja z.b. den namen mit der addy und das ergebnis nochmal
mit dem namen "verschlüsseln" oder weiß der geier...
wfg,
ShiKai
Moderiert von
Tino: PGP Signatur entfernt.
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!