Aktivierungscodes generieren

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Flash1232.

    Aktivierungscodes generieren

    Guten Tag zusammen,
    Seit einiger Zeit arbeite ich an einem Tuning-Programm für Windows 7 und bemühe mich derzeit um die Profilerstellungsformalitäten.
    Ich habe ein einfaches System im Kopf, das es ermöglicht, durch einen einmalig erstellten Registrierungscode den Benutzer und andere Daten dem Programm zuzuweisen.
    Nun habe ich in der Testphase eine Variante verwendet, die ich als unpassend empfinde: GUIDs zu verwenden. Ich weiss, es ist die sicherste Variante, da der "Zufalls"-Wert - logischerweise - auf reiner Mathematik, Systemvariablen und dem Datum/ der Uhrzeit beruht. Der WERT enthält jedoch wie man schon aus dem Wort lesen kann Buchstaben und Zahlen, ich möchte jedoch auf Buchstaben verzichten und die Zahl 12stellig haben. Stichwort: Randomizing.
    Meine Frage ist nun, wie ich feststellen lassen kann, ob eine Zahl bereits vorkommt, ohne eine einzelne Registerdatenbank dazu anlegen zu müssen.
    Ist dies möglich?

    Gruss Flash1232

    Flash1232 schrieb:

    ob eine Zahl bereits vorkommt
    Jede 12-Stellige Zahl kommt vor. Fragt sich nur, wo.
    Wo kommen in einer GUID Buchstaben vor? Meinst Du die Zahlen im Hex-Format?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Flash1232 schrieb:

    Anwender sind gegenüber Hex-Zahln eher skeptisch.
    Ich auch nicht.
    Das ist absolut kein Arbument, zumal dem "Anwender" solche Zeichenkolonnen permanent in der Registry begegnen.
    // {849174F9-5F13-495a-A014-F607E4F1B88A}
    DEFINE_GUID(<<name>>,
    0x849174f9, 0x5f13, 0x495a, 0xa0, 0x14, 0xf6, 0x7, 0xe4, 0xf1, 0xb8, 0x8a);
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So wie es aussieht, sollte ich in diesem Fall die relativ langen GUID-Hexzahlen verwenden? Warum tun es alle anderen Anwendungshersteller und Microsoft nicht? Es wird wohl seine Gründe haben, denke ich. Geburtstagsparadoxon: Was ist das nun? Dürfen keine Zahlenketten mit einem Jahrgang vorhanden sein? Kollisionswahrscheinlichkeit muss 0 sein, da ich jegliche Art von Verwechslungen ausschliessen muss, da mein System davon abhängig ist.

    Sollte ich falsch liegen, entschuldigt bitte!

    Gruss Flash1232

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Flash1232“ ()

    Flash1232 schrieb:

    Warum tun es alle anderen Anwendungshersteller und Microsoft nicht?

    Schon mal den Schlüssel für Lexware eingegeben? Und MS hat 4*5 aus 36. Hex wäre "nur" 26, also entsprechen dem 22 Stellen.

    Kollisionswahrscheinlichkeit muss 0 sein

    Na dann wirst du eine "Datenbank" brauchen, denn bei keinem Hash ist die Wahrscheinlichkeit 0.

    Geburtstagsparoxon: Was ist das nun?

    Die Wahrscheinlichkeit, dass von x Leuten 2 am selben, aber beliebigen Tag Geburtstag haben. Das trifft auch auf Hashes etc zu.
    Dem Anschein nach ist die GUID in diesem Fall doch eine einsetzbare Möglichkeit? Meine Frage wäre, ob die Kollisionswahrscheinlichkeit dabei praktisch 0 ist? Weil wenn es 9 Milliarden verschiedene Zahlen gibt, bis eine gleiche kommt, dann kann ich damit leben. Was nicht geht, ist, wenn es nach ein paar hunderten oder tausenden per Zufall eine gleiche gibt.

    picoflop schrieb:

    Die Wahrscheinlichkeit, dass von x Leuten 2 am selben, aber beliebigen Tag Geburtstag haben. Das trifft auch auf Hashes etc zu.

    Das ist ja mal wieder ne Kopfnuss :D
    Ich googlormiere mich mal darüber.

    Gruss Flash1232

    Flash1232 schrieb:

    die Kollisionswahrscheinlichkeit
    ist praktisch Null.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!