За безсмислени данни, хешовете на времето плюс сол винаги са стабилни и не могат да бъдат отгатнати лесно (простете на 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
Хешове. Има ли нещо, което те не могат правя?