Использование SHA1 для хеширования строк большего размера, чтобы их можно было использовать в качестве ключей в базе данных.
Попытка создать строку размера UUID из исходной строки, которая является достаточно случайной и достаточно большой для защиты от коллизий, но намного меньшей, чем исходная строка.
Не использовать это ни для чего, связанного с безопасностью.
Пример:
# Take a very long string, hash it down to a smaller string behind the scenes and use
# the hashed key as the data base primary key instead
def _get_database_key(very_long_key):
return hashlib.sha1(very_long_key).digest()
Подходит ли SHA1 для этой цели? Или есть что-то более подходящее?
hashlib.sha1(os.urandom(32)).hexdigest()
илиos.urandom(16).encode('hex')
. Вы пытаетесь избежать проверки таблицы на наличие повторяющихся идентификаторов? - person Blender   schedule 03.03.2013sha256
илиsha512
с меньшей вероятностью вызовут коллизии; у вас есть ограничение по размеру? Также ознакомьтесь с uuid v5 и rfc 4122 и uuid библиотека Python. - person Ja͢ck   schedule 03.03.2013