sql >> Databasteknik >  >> RDS >> Mysql

Genererar unika spårningsnummer

För meningslösa data är hash för tiden plus ett salt alltid stenhårda och kan inte gissas lätt (förlåt Python, jag har hört av den här Ruby-grejen men höll den aldrig i mina händer):

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

Förkorta den om du vill:

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

Använd ett heltal istället, om du vill, men längden har chansen att variera med den här koden, om du inte nollställer:

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

I före "zomg md5 är inte kryptosäker":

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

Helvete, du behöver inte ens använda tid, du kan använda ett autoinkrementerande heltal, så länge du saltar det:

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

Hashes. Finns det något de inte kan göra?



  1. SqlException (0x80131904):Ogiltigt objektnamn 'dbo.Categories'

  2. Fixa ORA-02273:denna unika/primära nyckel refereras till av vissa främmande nycklar

  3. välj alla kolumner som inte finns i en annan tabell laravel 5.5

  4. Java-animerad GIF- och MySQL-anslutning