Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Generieren eindeutiger Tracking-Nummern

Für bedeutungslose Daten sind Hashes der Zeit plus ein Salz immer felsenfest und können nicht leicht erraten werden (verzeihen Sie dem Python, ich habe gehört dieses Ruby-Dings, aber nie in meinen Händen gehalten):

>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()
'7a8b73fa7e0dadf246612e6001ede165'

Kürzen Sie es, wenn Sie möchten:

>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:16]
'46ffb69ebc96412d'

Verwenden Sie stattdessen eine Ganzzahl, wenn Sie möchten, aber die Länge kann mit diesem Code variieren, es sei denn, Sie füllen mit Nullen auf:

>>> int(hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1346212029197308

Vorher „zomg md5 ist nicht kryptosicher“:

>>> int(hashlib.sha256(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1948411134966366

Hölle, Sie müssen nicht einmal Zeit verwenden, Sie können eine automatisch inkrementierende Ganzzahl verwenden, solange Sie sie salzen:

>>> int(hashlib.sha256(str(1) + "!salt!").hexdigest()[:13], 16)
1269883740611281
>>> int(hashlib.sha256(str(2) + "!salt!").hexdigest()[:13], 16)
3655373802716929

Hashes. Gibt es irgendetwas, was sie nicht können tun?