все Python 3hashlibфункция
hashlib.sha1()
хеширование
Хеш SHA-1: 20 байт, 40 шестнадцатеричных знаков. Взломан по коллизиям — для подписей и паролей не годится, остаётся для совместимости.
Синтаксис
hashlib.sha1(data=b'', *, usedforsecurity=True)
Практическую коллизию SHA-1 опубликовали в 2017 году, так что две разные строки с одинаковым хешем подобрать можно. Встречается он там, где формат зафиксирован давно: идентификаторы объектов в git, старые протоколы, uuid5(). В новом коде берут sha256(); если SHA-1 нужен ради совместимости, а не защиты, это говорят явно — usedforsecurity=False, иначе в средах со строгой политикой (режим FIPS) вызов отклонят.
Примеры
import hashlib
h = hashlib.sha1(b'abc')
print(h.hexdigest()[:16]) # → a9993e364706816a
print(h.digest_size, len(h.hexdigest())) # → 20 40
# Python 3.9+
import hashlib
# не для защиты, а для совместимости — так и говорим
h = hashlib.sha1(b'abc', usedforsecurity=False)
print(h.hexdigest()[:16]) # → a9993e364706816a
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности