Zum Inhalt springen

Aus zwei Zahlen eine dritte machen


Woodstock

Empfohlene Beiträge

Du könntest dir überlegen nicht einfach die Festplattenseriennummer zu benutzen(ist ziemlich leicht rauszukriegen), sondern eine 32Bit Zahl die du erhältst wenn du die Seriennummer in einer definierten Art und Weise über die 32 Bit verteilst. Also z.B. Bit 1 steht an 20.Stelle, bit 2 an 5. Stelle usw.

So ist es etwas schwieriger für den Kunden für andere Maschinen einen Schlüssel zu errechnen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Programm soll an eine Festplatte gebunden sein. Und der Kunde bekommt diese Nummer auch mitgeteilt. Also die Festplattennummer bleibt ganz sicher bestandteil des Keys. Genauso die Kundennummer. Mir ging es nicht darum welche Zahlen ich verwenden kann - sondern nur wie ich sie relativ einfach verschlüsseln kann.

Bine

Link zu diesem Kommentar
Auf anderen Seiten teilen

also einen Algorithmus zum Kombinieren von 2 Zahlen zu einem Programmcode...

Also ich hab mir mal was kleines überlegt:

Zahl1 und Zahl2 bitweise verknüpfen (da es ja egal zu sein scheint, ob du das wieder Rückgängig machst ist die Verknüpfung egal).

Das Ergebnis nimmst du als Binärzahl (Aufgerundet auf eine gerade Anzahl von Bit-Paaren, zur Not mit Nullen von links auffüllen).

Von dieser Zahl nimmst du immer 4 bit.

Beispiel:

(Zahl1 und Zahl2 irgendwie verknüpfen)

Zahl3 = 10 01 11 00 11

Aufgefüllt: 00 10 01 11 00 11

ergibt 3 mal 4 bit: 00 10 ; 01 11 ; 00 11

diese bitpaare nimmst du zur Berechnung. Davor hängst du immer die gleichen 4 bit und zwar 00 11

also wäre das erste Päärchen dann: 00 11 00 10,

das zweite: 00 11 01 11 und das dritte 00 11 00 11.

Diese Binärzahl wandelst du in Dezimal um und zählst 16 dazu. Als ergebnis hast du Zahlen zwischen 64 und 79.

Dann nimmst du den ASCII Code und holst dir das dazugehörige Zeichen also [@, A, B, C, D, ..., M, N, O].

Diese Zeichen hängst du hintereinander und fertig ist dein Schlüssel für das Programm.

Obiges Beispiel wäre also BGC

Hoffe das hilft dir...

EDIT: Die 00 beim Anfügen von 00 11 kannst du natürlich auch weglassen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zahl1 und Zahl2 bitweise verknüpfen (da es ja egal zu sein scheint, ob du das wieder Rückgängig machst ist die Verknüpfung egal).

Es ist nicht egal:

Bei der Erzeugung des Schlüssels wird in die eine Richtung verknüpft.

Bei der Verifikation des Schlüssels in die andere.

Also Nummer1 ++ Nummer2 = schlüssel ( für die Erzeugung)

Schlüssel ++ Nummer2 = Nummer1

Oder Schlüssel ++ Nummer1 = Nummer2 ( für Verifikation)

Von den möglichen bit-Verknüpfungen kommt da nur XOR in Frage.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von maxim_42

Es ist nicht egal:

Bei der Erzeugung des Schlüssels wird in die eine Richtung verknüpft.

Bei der Verifikation des Schlüssels in die andere.

Muss nicht unbedingt sein.

Das Passwort bei Windows z.B. wird nie entschlüsselt. Zum Prüfen wird deine Eingabe verschlüsselt und mit dem verschlüsselt gespeicherten Passwort verglichen.

Genauso würde auch hier eine Einweg "Verschlüsselung" reichen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Erstellung des Schlüssels soll sowohl hier bei uns passieren (wenn der Kunde nach dem Schlüssel fragt) als auch beim Kunden direkt - da das Programm ohne Hardcodieren entscheiden können muss ob der Schlüssel ok ist. Das Verschlüsseln muss nicht rückgängig gemacht werden!

Sabine

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Woodstock

Die Erstellung des Schlüssels soll sowohl hier bei uns passieren (wenn der Kunde nach dem Schlüssel fragt) als auch beim Kunden direkt - da das Programm ohne Hardcodieren entscheiden können muss ob der Schlüssel ok ist.

Das mit der Harddisk-Nummer ist ja ok, die Kundennummer allerdings ist als 2te Zahl so eine Sache... da die ja nur bei euch vorhanden ist müsste die entweder in die Exe mit rein (da für jeden Kunden anders ist dies absolut keine Lösung) oder in einer Datei, die von der Exe ausgelesen wird, mitgeliefert werden.

Eine andere Möglichkeit wäre es, eine Zahl vorzugeben. Dazu kannst du irgendeine Zahl nehmen (dein Geburtsdatum ohne die Punkte 12011975, oder was halt passt) und diese Zahl fest im Code haben.

Dann startet der Kunde ein Programm das die HD-Nummer ausliest und z.B. in einer Datei ablegt. Diese Datei wird an euch geschickt und ihr startet ein Programm, dass aus der nummer in der Datei und der ferst hinterlegten Datei einen Key generiert. dieser Key wird eingegeben und vom Programm irgendwo gespeichert (Registry, Datei... ?). Beim Starten wird immer wieder der Key-Erzeugungsalgorithmus ausgeführt (HD-Nummer auslesen und konstante Nummer aus dem code) und der erzeugte Key mit dem gespeicherten verglichen.

Edit: Ihr könntet als 2te Zahl z.B. auch die Bit-Grösse der Exe nehmen, damit wäre der Schlüssel allerdings nur für genau eine Ausgabe des Programms gültig. Jede Änderung würde einen neuen Schlüssel verlangen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...