Python Glossary English

все 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Сообщить о неточности