W przypadku bezsensownych danych, skróty czasu plus sól są zawsze solidne i nie można ich łatwo odgadnąć (wybacz Pythonowi, słyszałem tego Rubiego, ale nigdy nie trzymałem go w rękach):
>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()
'7a8b73fa7e0dadf246612e6001ede165'
Skróć go, jeśli chcesz:
>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:16]
'46ffb69ebc96412d'
Zamiast tego użyj liczby całkowitej, jeśli chcesz, ale długość może się różnić w zależności od tego kodu, chyba że wpiszesz zero:
>>> int(hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1346212029197308
Przedtem „zomg md5 nie jest bezpieczny krypto”:
>>> int(hashlib.sha256(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1948411134966366
Cholera, nie musisz nawet używać czasu, możesz użyć automatycznej liczby całkowitej, o ile ją posolisz:
>>> int(hashlib.sha256(str(1) + "!salt!").hexdigest()[:13], 16)
1269883740611281
>>> int(hashlib.sha256(str(2) + "!salt!").hexdigest()[:13], 16)
3655373802716929
Hasze. Czy jest coś, czego nie mogą? zrobić?