Trial-Version erstellen

Ok, die HD-ID habe ich jetzt. Aber kennt jemand einen Algorhytmus, wie ich daraus einen Key bastele? Denn die ID bekomme ich ja erst, wenn das Programm auf dem PC läuft. Wenn ich den Key generieren will, auf meinem PC, habe ich die nicht.
Im Moment sieht meine Variante der Key-Erzeugung so aus, daß ich mir einen Schlüssel-String von der Key-Länge mit zufällig erzeugten Ziffern gebastelt habe. Aus den persönlichen Angaben des Users wird ein String der Key-Länge erzeugt und dann jedes Zeichen des Strings anhand des Betrags der Ziffer an derselben Stelle im Schlüssel-String verschoben wird. Um druckbare Zeichen zu erhalten, wird, wenn der Bereich der druckbaren Zeichen überschritten wird, solange ein definierter Betrag abgezogen, bis ein druckbares Zeichen entsteht. Das betrifft besonders Umlaute.
Der erzeugte Key-String wird mit dem eingegebenen Key (der genauso erzeugt wurde) verglichen, wenn Übereinstimmung herrscht, wird freigeschaltet.
Das Verfahren funktioniert. Aus dem Key sind auch keinerlei Rückschlüsse auf die eingegebenen persönlichen Daten zu ziehen, sieht sehr kryptisch aus.
Würde aber gern das Verfahren mit der HD-ID verwenden. Wer also hat Ideen?

Mfg

langer
 
Der Benutzer müsste zuerst auf seinem Rechner das Programm starten, das Programm errechnet für die Registrierung mit der HD-ID einen Key. Diesen Key muss der Benutzer zusätzlich zu seinem Namen angeben. Fairerweise würde ich den Benutzer aber darauf hinweisen, dass er bei einem Installieren auf einer anderen Platte einen neuen Key anfordern muss.
 
Ja, dieser Weg ist mir schon klar. Aber wie errechne ich den Key, den er eingeben muß? Der Algorithmus dafür ist mir nicht klar. Habe auch bei Code-Project und Code-Guru nichts dazu gefunden.

Mfg

langer
 
Ich glaube, Endurion meint das so:
Dein Programm erzeugt bei oder nach der Installation aus der HD-ID mit meinem beliebigen Verfahren einen Anmeldeschlüssel. Diesen schickt Dir der Anwender zum registrieren zu. Aus dem Anmeldeschlüssel erzeugst Du dann wiederum mit einem beliebigen Verfahren einen Registrierungsschlüssel, welchen Du dem Anwender zurückschickst. Dein Programm speichert diesen Registrierungsschlüssel (in der Registry oder einer Datei) und überprüft ihn jedesmal beim Start des Programmes.
Soviel zum Allgemeinen. Genauer könnte das so aussehen:
- Der Anwender gibt bei der Installation seinen Namen ein (z.B. Hans Meier).
- Das Programm ermittelt die HD-ID der ersten Festplatte (z.B. 1234-5678)
- Das Programm erzeugt aus Namen und HD-ID einen Anmeldeschlüssel wie folgt:
(HD-ID verodert mit den ersten 8 Byte des Namens ohne Leerzeichen)
(Bsp: 12345678 | HansMeie, also '1' | 'H', '2' | 'a', '3' | 'n',..., das ergibt bei mir folgende Zahlenreihe: 121, 115, 127, 119, 125, 119, 127, 125; hexadezimal: 79737F777D777F7D) Dieses Verfahren ist bestimmt nicht optimal, ist ja auch nur ein Beispiel, Du kannst z.B. auch XOR statt OR verwenden. Das Verfahren muß aber umkehrbar sein. Natürlich kannst Du auch die HD-ID direkt verwenden.
- Diese hexadezimale Zahlenreihe schickt Der Anwender mit seinen Adressdaten an Dich. Die Adressdaten brauchst Du nur, um ihn bei einer eventuellen späteren Wiederholungsregistrierung identifizieren zu können.
- Aus der Zahlenreihe erzeugst Du einen Registrierungsschlüssel, den Du an den Anwender zurückschickst. Dazu würde ich eine PGP-Verschlüsselung verwenden, da Du dann zum Erzeugen des Schlüssels einen privaten PGP-Key verwenden kannst und im Programm zum Entschlüsseln den öffentlichen PGP-Key.
- Der Anwender gibt den Registrierungsschlüssel im Programm ein, das Programm speichert ihn ab.
- Bei jedem Programmstart liest das Programm den Registrierungsschlüssel, entschlüsselt ihn mit dem öffentlichen PGP-Key, der im Programm hinterlegt ist, extrahiert mit dem umgekehrten Verfahren die HD-ID und vergleichst sie mit der ID der eingebauten Festplatte.

Noch Fragen? ;-)
 

Neue Beiträge

Zurück