Для бессмысленных данных хеши времени плюс соль всегда твердые и не могут быть легко угаданы (простите Python, у меня слышал этой вещи Ruby, но не держал ее в руках) :
>>> 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
Хеши. Есть ли что-нибудь они не может делать?
хэширование общего пути? – ukanth
Подумайте о base32 или base64, кодируя код, если вы хотите уменьшить количество символов в ID. – Artelius