Untuk data yang tidak berarti, hash waktu ditambah garam selalu solid, dan tidak dapat ditebak dengan mudah (maafkan Python, saya pernah mendengar dari benda Ruby ini tetapi tidak pernah memegangnya di tangan saya):
>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()
'7a8b73fa7e0dadf246612e6001ede165'
Persingkat, jika Anda suka:
>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:16]
'46ffb69ebc96412d'
Gunakan integer sebagai gantinya, jika Anda suka, tetapi panjangnya memiliki peluang untuk bervariasi dengan kode ini, kecuali Anda zero-pad:
>>> int(hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1346212029197308
Sebelum "zomg md5 tidak aman untuk kripto":
>>> int(hashlib.sha256(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1948411134966366
Sial, Anda bahkan tidak perlu menggunakan waktu, Anda dapat menggunakan bilangan bulat autoincrementing, selama Anda memberi garam:
>>> int(hashlib.sha256(str(1) + "!salt!").hexdigest()[:13], 16)
1269883740611281
>>> int(hashlib.sha256(str(2) + "!salt!").hexdigest()[:13], 16)
3655373802716929
Hash. Apakah ada yang tidak bisa lakukan?