Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo!

Ich möchte aus zwei mir bekannten Hex-Zahlen eine dritte Zahl generien. Was für ein Verfahren würdet Ihr empfehlen bzw. wie würdet Ihr das machen? Es darf aber kein Zufall sein - da ich dieses Generieren wiederholen können muss.

Bine

Wie wärs mit addieren?

Ok, dass ist fies von mir. Wozu genau willst du aus zwei Hex-Zahlen eine dritte machen?

Aus den beiden Zahlen soll ein Key erstellt werden. Und einfaches addieren ist nicht - zu einfach. Das mit dem bitweisen verknüpfen finde ich gut!

Bine

Original geschrieben von Woodstock

Das mit dem bitweisen verknüpfen finde ich gut!

Exklusives Oder (XOR) , die einfachste Art der Verschlüsslung ;)

Bilde doch einfach die Quersumme...

MVG

need-some-blood

wahrscheinlich genausowenig wie bei mir.

aber evtl. hilft ihm ja der Huffman-Co weiter. Hat zwar weniger mit Verschlüsselung als mit Kompression zu tun. Aber um sich mal reinzudenken recht nützlich.

Infos unter

EducETH

MVG

need-some-blood

Original geschrieben von need-some-blood

... ihm...

Ohoh, böse Falle! Aber trotzdem danke! Mein Chef und ich haben uns bereits geeinigt!

Sabine

Hallo,

Eine XOR ist auch nicht komplexer als eine einfache Addition der Zahlen. Wenn Ihr wirklich Daten "verschlüsseln" wollt, dann solltet Ihr auch auf ein entsprechend sicheres Verfahren zurückgreifen. An welcher Stelle soll den der Algorithmus eingesetzt werden?

Nic

Eine richtige Verschlüsselung wird es sicher nicht. Es geht einfach nur darum aus diesen zwei Zahlen (Kundennummer und Festplattennummer) einen Key zu erzeugen der das Programm freischaltet.

Bine

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.

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

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 ;)

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.

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.

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

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.

Es wird die Kundennummer sein - das hat mein Cehf entschieden. Der Kunde wird ein eingabefeld für die Nummer haben - und auf seiner Lieferung steht die Nummer drauf. Damit ist das kein Problem.

Bine

Na ok, wie gesagt mein Algo. oben würde dir dann ja einen Schlüssel liefern.

Ist aber nicht getetet sonderrn frisch ausgedacht und gepostet ;)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.