Mysql
 sql >> Base de données >  >> RDS >> Mysql

Génération de numéros de suivi uniques

Pour les données dénuées de sens, les hachages de l'époque plus un sel sont toujours solides et ne peuvent pas être devinés facilement (pardonnez le Python, j'ai entendu de ce truc Ruby mais je ne l'ai jamais tenu entre mes mains) :

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

Raccourcissez-le, si vous le souhaitez :

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

Utilisez un entier à la place, si vous le souhaitez, mais la longueur peut varier avec ce code, à moins que vous ne mettiez un zéro à zéro :

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

Avant "zomg md5 n'est pas sécurisé par crypto":

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

Enfer, vous n'avez même pas besoin d'utiliser le temps, vous pouvez utiliser un entier auto-incrémenté, tant que vous le salez :

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

Hachages. Y a-t-il quelque chose qu'ils ne peuvent pas faire ?