Для бессмысленных данных хэши времени плюс соль всегда безупречны и не могут быть легко угаданы (прости Питон, я слышал этой рубиновой штуки, но никогда не сдерживал ее мои руки):
>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()
'7a8b73fa7e0dadf246612e6001ede165'
Сократите, если хотите:
>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:16]
'46ffb69ebc96412d'
Вместо этого используйте целое число, если хотите, но длина может измениться с этим кодом, если только вы не наберете ноль:
>>> int(hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1346212029197308
В до "zomg md5 не является криптобезопасным":
>>> int(hashlib.sha256(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1948411134966366
Черт, вам даже не нужно использовать время, вы можете использовать целое число с автоинкрементом, пока вы его солите:
>>> int(hashlib.sha256(str(1) + "!salt!").hexdigest()[:13], 16)
1269883740611281
>>> int(hashlib.sha256(str(2) + "!salt!").hexdigest()[:13], 16)
3655373802716929
хэшей. Есть ли что-то, что они не могут сделать?