Also ich habe da eine Prinzipielle Idee:
Du verwendest einfach eine Public-Key verschlüsselung
Die Idee ist folgende:
Du lieferst Deinen Public Key mit Deinem Programm aus.
Die Software beim Kunden erzeugt beim ersten Start ein Schlüsselpaar, bei der Bestellung der Serial schickt Dein Programm den Public Key des Käufers mit.
Du Verschlüsselst nun alle Angaben die Dein Programm braucht (kann dann ja sogar ne .ini sein) mit dessen public Key und signierst mit Deinem private Key.
Die Software kann nun a) verfizieren, daß das Keyfile von Dir kommt (dank Deinem Public Key).
Es erkennt also auch Key-Fälschungen.
Die Software kann nun b) den Key auch entschlüsseln - und zwar nur diesen einen Key! Alle anderen Keys haben andere Schlüssel und somit sind die Keys nicht austauschbar
Zudem brauchst Du Dir keine Gedanken zu machen, wie gut oder schlecht der Algorithmus Deiner Lizenznummenr ist, da es recht schwierig sein dürfte ohne Deinen private Key ein gültiges Lizenzfile zu verschlüsseln so das es aussieht asl käme es von Dir.
Freilich wird das File etwas grösser und lässt sich nur noch per eMail verschicken, aber es ist relativ sicher.
Damit brauchst Du also keine Lizenznummern erzeugen mit irgendeinem system, sondern Dich auf das wesentliche beschränken. Private/Public-Key implementationen gibt es bereits zu hauf, Du brauchst die also nur einzubinden und gut ist.