Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Gerando números de rastreamento exclusivos


Para dados sem sentido, hashes do tempo mais um sal são sempre sólidos e não podem ser adivinhados facilmente (desculpe o Python, eu ouvi dessa coisa de Ruby, mas nunca segurei em minhas mãos):
>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()
'7a8b73fa7e0dadf246612e6001ede165'

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

Use um número inteiro em vez disso, se quiser, mas o comprimento tem a chance de variar com este código, a menos que você use zero:
>>> int(hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1346212029197308

Antes de "zomg md5 não é cripto seguro":
>>> int(hashlib.sha256(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1948411134966366

Inferno, você nem precisa usar o tempo, você pode usar um inteiro de autoincremento, desde que você salgue:
>>> int(hashlib.sha256(str(1) + "!salt!").hexdigest()[:13], 16)
1269883740611281
>>> int(hashlib.sha256(str(2) + "!salt!").hexdigest()[:13], 16)
3655373802716929

Hashes. Existe alguma coisa que eles não podem Faz?