Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0

beta20

Top Contributor
Hallo,

ich würde gerne folgendes prüfen:

1)
Bevor meine Installation des Programms gestartet werden kann, möchte ich gerne einen Check machen, ob der Serial Key überhaupt valide ist.
Hierzu stelle ich mir folgendes vor:
a) Serial Key wird eingegeben
b) Serial Key wird mit einem privaten Schlüssel versehen, den der User natürlich nicht weiß, steckt irgendwo dann im Code meiner Installation
c) Nun die Frage: wie kann ich diesen Check dann machen??
Ich hätte mir irgendwie was vorgestellt wie: den privaten Schlüssel zu subtrahieren und dann komme ich immer auf eine Zahl oder sowas. Wenn diese Zahl die gewünschte ist, dann ist der Key gültig. Z.B. die Summe muss immer 0 sein oder ähnliches (Bei Strings wird das Subtrahieren dann natürlich schwierig). Hat hier jemand eine Idee?


________
Nach der Installation kommt dann natürlich noch die eigentliche Aktivierung, was dann Online gemacht wird. (Das ist dann aber wieder ein anderes Thema...)

Danke für jede Hilfe.
 

Thallius

Top Contributor
Wozu soll das gut sein ? Dann stelle ich den Serial key ins Internet und jeder kann sich den runterladen und Dein Programm benutzen.

Reine Zeitverschwendung

Gruß

Claus
 
K

kneitzel

Gast
Ich gebe Thallius diesbezüglich Recht. Haben wir das nicht schon einmal etwas durchgekaut?

Also der Check eines Serial-Keys kann bereits relativ trivial gemacht werden und mir fallen gleich eine ganze Reihe an Möglichkeiten ein. Ohne Dir zu nahe treten zu wollen: Wieso investierst Du so viel Energie in sowas? Ich würde die Zeit in die Applikationen stecken und dafür sorgen, dass die Leute meine Applikation nutzen wollen. Spätere Versionen kann ich ggf. schützen, wenn es sich lohnt, das zu schützen.

Möglichkeiten, die mir so durch den Sinn gehen:
- Wenn es mit private / public key sein soll, könnte der Key einfach etwas sein, denn Du signiert hast. Also Name und Key - Name signiert ist der Key. Zum signieren brauchst Du den private key, Unterschrift prüfen geht mit public key.
- Einfache mathematische Formeln - hier wäre also z.B. eine Checksumme denkbar. Das lässt sich auch etwas komplizierter machen mit mehreren Checksummen oder mit der Einberechnung von externen Konstanten. Generell ist hier der Ansatz, dass Du eine Formel hast, für die gelten muss:
a) Du musst die Formel einwandfrei berechnen (prüfen) können.
b) Du musst in der Lage sein, jederzeit neue Versionen zu erstellen.
Also ein kleines, ganz einfaches Beispiel wäre:
Formel: (x1-p1) *127 + (x2-p2) *371 = (x3-p3)
Key: x1-x2-x3
Produkt: p1-p2-p3
Beispielprodukt: 3-2-1
Beispielkey: 4-3-499
Das nur als eine einfache kleine Spinnerei um zu zeigen, wie trivial das sein kann.

Im Netz wird es noch viel mehr Ideen geben.
 

beta20

Top Contributor
Danke zunächst mal.
Wäre es denn nicht auch möglich:

1. User kauft Software
2. Aus Emailadresse, Datum und dem private Key (der auf dem Webserver liegt, der den Serial Key erzeugt) wird die Serial Key generiert.
3. User will nun Software installieren. In meinem Installer, die der User ausführt, ist ebenfalls der private Key drin (natürlich nicht sichtbar für den User)
4. Serial Key wird nun mit dem private Key wieder entschlüsselt und gibt eben true oder false zurück.
-> Falls der Key falsch ist (also demnach auch der private Schlüssel nicht passt), dann ist die Serial Nummer falsch.

Ist das Konzept ebenfalls ok?
 
K

kneitzel

Gast
Also wenn, dann nutzt ein Asymetrisches Verfahren und das bedeutet, dass Du einen public und einen private key hast. Die Namen sagen dabei ja schon alles aus: Der eine ist public und den gibt man raus und der andere ist private und den gibt man nicht raus.

Also würde der private Key etwas signieren (z.B. Emailadresse) und diese Signatur wäre dann der Key.
Die Signatur ist mit dem public key überprüfbar.
 

beta20

Top Contributor
hm, steige da leider noch nicht ganz durch.
Hast Du einen Code, speziell auch:

a) Wie muss der Code auf meinem Webserver (Generierung des Serial Key) programmiert werden?
b) Was muss beim Installer programmiert sein?

Wäre wirklich sehr nett
 

beta20

Top Contributor
Ich brauche doch aber keinen Random??
Code:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);

Der private Key soll doch immer gleich sein?
So wie ich es verstanden habe ist dann:

a) Privater Schlüssel auf meinen Webserver
b) öffentlicher Schlüssel in der Installationsdatei

Hm die Beispiele sind etwas irreführend, was z.B. ist "test ? (in deinem zweiten Link)
Code:
byte[] data = "test".getBytes("UTF8");
 
K

kneitzel

Gast
Ja, die Schlüssel generierst Du nur ein einziges Mal und speicherst diese dann. Da ist Dein Verständnis richtig. In dem Beispiel geht es ja nur darum, schnell etwas zu zeigen, das lauffähig ist.

"test" ist der String, der signiert wird. Das könnte also die Email-Adresse bei Dir sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Serial port abfragen Java Basics - Anfänger-Themen 18
B Serial Key - Prüfung ob Software gekauft Java Basics - Anfänger-Themen 1
I Serial Key speichern? Java Basics - Anfänger-Themen 8
E Programm - Serial etc? Java Basics - Anfänger-Themen 4
nrg Serial Version ID? Java Basics - Anfänger-Themen 16
ff eclipse ::--> serial version uid Java Basics - Anfänger-Themen 8
G @SuppressWarnings("serial") Java Basics - Anfänger-Themen 2
H Serial Java Basics - Anfänger-Themen 5
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
I Auf vollen Monat prüfen? Java Basics - Anfänger-Themen 22
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
X Zwei Dimensionales Array prüfen Java Basics - Anfänger-Themen 1
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
B Sudoku prüfen Java Basics - Anfänger-Themen 13
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
X Array auf Leerstellen prüfen Java Basics - Anfänger-Themen 1
FelixN Prüfen, ob ein 2D-Array rechteckig ist Java Basics - Anfänger-Themen 42
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
S Array doppelter Wert prüfen Java Basics - Anfänger-Themen 7
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
O Array nach gleichen Zahlen prüfen und ausgeben Java Basics - Anfänger-Themen 6
G Compiler-Fehler Auf Anagramm prüfen Java Basics - Anfänger-Themen 1
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
C Klassen Reguläre Ausdrücke auf Gleichheit prüfen Java Basics - Anfänger-Themen 5
M Erste Schritte Java prüfen ob eine der Möglichkeiten erfüllt ist Java Basics - Anfänger-Themen 2
R Auf Nachkommastellen prüfen. Java Basics - Anfänger-Themen 2
P Argumente auf plausibilität prüfen... Java Basics - Anfänger-Themen 8
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
B String mit Emailadresse prüfen Java Basics - Anfänger-Themen 11
E 2D Arrays auf Ungleichheit prüfen! Java Basics - Anfänger-Themen 5
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
N Compiler-Fehler Iban prüfen Java Basics - Anfänger-Themen 7
J Prüfen ob Arrays nur mit einem Wert belegt sind Java Basics - Anfänger-Themen 3
M String prüfen Java Basics - Anfänger-Themen 7
E Prüfen ob Sammlung gesetzt wurde - Lebensmittelsammlung Java Basics - Anfänger-Themen 8
H Zufällig generierte Zahlen auf Eingabe prüfen Java Basics - Anfänger-Themen 5
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
Ruvok Prüfen ob bestimmtest Element existiert im Array Java Basics - Anfänger-Themen 11
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
S String auf Pallindromeigenschaft prüfen Java Basics - Anfänger-Themen 15
AssELAss Datums-Objekt prüfen ob im gleichen Monat? Java Basics - Anfänger-Themen 5
Screen Input/Output Wie prüfen ob Stream1 in Stream2 enthalten ist (on-the-fly) ? Java Basics - Anfänger-Themen 5
P Seite auf Inhalt prüfen Java Basics - Anfänger-Themen 2
I Prüfen ob Webseite existiert Java Basics - Anfänger-Themen 3
Z Inputs prüfen Java Basics - Anfänger-Themen 6
G Textdatei auf Dubletten prüfen Java Basics - Anfänger-Themen 8
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K zwei Rechtecke auf Berührung prüfen Java Basics - Anfänger-Themen 2
G String auf Format prüfen Java Basics - Anfänger-Themen 3
J Eingabewert übergeben und prüfen von showInputDialog Java Basics - Anfänger-Themen 4
L 6stellige Zufallszahlen erzeugen & auf einzigartigkeit prüfen Java Basics - Anfänger-Themen 3
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
M Prüfen, ob Zeichen eine Zahl ist Java Basics - Anfänger-Themen 3
M Punkt auf eine Farbe prüfen Java Basics - Anfänger-Themen 8
C Datentypen Prüfen of eine Zahl Quadratzahl ist Java Basics - Anfänger-Themen 2
K Eindimensionalen Array prüfen Java Basics - Anfänger-Themen 5
M Konstruktor auf null prüfen, Arrays Java Basics - Anfänger-Themen 9
O Prüfen ob ein String den selben Namen hat wie eine Booleanreihe? Java Basics - Anfänger-Themen 17
J Arrays prüfen und über if Bedingung ausgeben Java Basics - Anfänger-Themen 15
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
L Erste Schritte Einträge in ArrayList prüfen Java Basics - Anfänger-Themen 4
S OOP long prüfen Java Basics - Anfänger-Themen 5
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
Rayo Eingelesene Ascii Zahlen wie normale Zahlen prüfen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben