Ich muss einen Verifizierungscode generieren und ihn an einen Kunden senden, damit der Kunde den Code später eingeben kann und ich ihn validiere. Ich möchte dies tun können, ohne die Verifizierungscodes in einer Datenbank zu speichern, d. h. die Codes sollten in sich geschlossen sein.
Wie kann ich den Code generieren und verhindern, dass der Kunde nur raten kann, was ein gültiger Code ist? Natürlich kann ich ein glückliches Raten nicht völlig ausschließen, aber ich möchte, dass die Wahrscheinlichkeit eines solchen Ereignisses einigermaßen gering ist, während ich die Länge des Codes klein halte. Ein Code kann Ziffern und Buchstaben enthalten.
Ein sehr einfacher Verifizierungscode würde zum Beispiel so aussehen: Zufallsgenerator für die Zahl 1122
. Berechnen Sie nun den Verifizierungscode 11226
( 1122
und fügen seine Prüfsumme an 6=1+1+2+2
). Wenn der Kunde also zurücksendet 11226
Ich könnte sie wieder validieren, aber das ist natürlich zu leicht zu fälschen. Gibt es eine Methode, solche Codes zu erzeugen?
EDITAR: Das Problem besteht darin, dass das System, das den Verifizierungscode sendet, und das System, in dem der Verifizierungscode validiert wird, voneinander getrennt sind und keine Informationen zwischen diesen beiden Systemen ausgetauscht werden. Es gibt keine Möglichkeit, dass sogar die zufällig generierte Zahl ( 1122
im Beispiel) ist dem Validierungssystem bekannt. Ich gebe Ihnen ein weiteres Beispiel: In meinem Land gibt es eine Aktion namens "Orange Wednesday". Sie können zwei Kinokarten zum Preis von einer erhalten, wenn Sie einen Code per SMS erhalten (Sie senden eine SMS und erhalten einen Code per SMS, wenn Sie Orange-Kunde sind). Dieser Code ist jedoch an nichts gebunden (Telefonnummer oder ähnliches): Ich kann den Code an eine andere Person weitergeben und er ist immer noch gültig. Ich bräuchte diese Art von Verifizierungscode.