sql >> Databáze >  >> RDS >> Mysql

Generování jedinečných sledovacích čísel

Pro nesmyslná data platí, že hash času plus sůl jsou vždy pevné jako skála a nelze je snadno uhodnout (promiňte Python, slyšel jsem této Ruby věci, ale nikdy jsem ji nedržel v rukou):

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

Pokud chcete, zkraťte to:

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

Pokud chcete, použijte místo toho celé číslo, ale délka se může s tímto kódem lišit, pokud nenulujete:

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

Před "zomg md5 není kryptozabezpečený":

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

Sakra, ani nemusíš používat čas, můžeš použít celé číslo s automatickým přírůstkem, pokud to osolíš:

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

Hashe. Je něco, co neumějí dělat?



  1. Velikost řádku je příliš velká (> 8126) mohu jen změnit InnoDB na MyISAM

  2. Ověřte přihlášení pomocí hesla Bcrypt

  3. Dezinfikujte vstup do sloupce v postgresu

  4. Mohu kopírovat :STARÉ a :NOVÉ pseudozáznamy do/do uložené procedury Oracle?