Mysql
 sql >> Database >  >> RDS >> Mysql

Generazione di numeri di tracciamento univoci

Per i dati privi di significato, gli hash del tempo più un sale sono sempre solidi come una roccia e non possono essere indovinati facilmente (perdona il Python, ho sentito di questa cosa di Ruby ma non l'ho mai tenuta tra le mani):

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

Accorcialo, se vuoi:

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

Usa invece un numero intero, se lo desideri, ma la lunghezza ha la possibilità di variare con questo codice, a meno che tu non azzeri:

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

In prima "zomg md5 non è sicuro crittografato":

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

Diavolo, non devi nemmeno usare il tempo, puoi usare un numero intero a incremento automatico, purché lo salti:

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

Hash. C'è qualcosa che non possono fare?