> **Источник:** https://python-all.ru/2.7/library/sha.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 14.4. [`sha`](https://python-all.ru/2.7/library/sha.html#module-sha) – алгоритм дайджеста сообщений SHA-1

Устарело с версии 2.5: Вместо этого используйте модуль [`hashlib`](https://python-all.ru/2.7/library/hashlib.html#module-hashlib).

Этот модуль реализует интерфейс к защищённому хэш-алгоритму NIST, известному как SHA-1. SHA-1 – улучшенная версия исходного хэш-алгоритма SHA. Он используется аналогично модулю [`md5`](https://python-all.ru/2.7/library/md5.html#module-md5): вызов [`new()`](https://python-all.ru/2.7/library/new.html#module-new) создаёт объект sha, затем в этот объект передаются произвольные строки методом `update()`, и в любой момент можно запросить *дайджест* конкатенации всех переданных на данный момент строк. Дайджесты SHA-1 имеют длину 160 бит, в отличие от 128 бит у MD5.

#### `sha.new([string])`

Возвращает новый объект sha. Если передан *string*, то выполняется вызов метода `update(string)`.

Следующие значения предоставляются как константы в модуле и как атрибуты объектов sha, возвращаемых [`new()`](https://python-all.ru/2.7/library/new.html#module-new):

#### `sha.blocksize`

Размер блоков, подаваемых на хэш-функцию; всегда равен `1`. Этот размер используется для того, чтобы можно было хэшировать произвольную строку.

#### `sha.digest_size`

Размер результирующего дайджеста в байтах. Всегда равен `20`.

Объект sha имеет те же методы, что и объекты md5:

#### `sha.update(arg)`

Обновить объект sha строкой *arg*. Повторные вызовы эквивалентны одному вызову с конкатенацией всех аргументов: `m.update(a); m.update(b)` эквивалентно `m.update(a+b)`.

#### `sha.digest()`

Возвращает дайджест строк, переданных методу [`update()`](https://python-all.ru/2.7/library/sha.html#sha.sha.update) на данный момент. Это 20-байтовая строка, которая может содержать не-ASCII символы, включая нулевые байты.

#### `sha.hexdigest()`

Как [`digest()`](https://python-all.ru/2.7/library/sha.html#sha.sha.digest), но дайджест возвращается в виде строки длиной 40, содержащей только шестнадцатеричные цифры. Это может использоваться для безопасного обмена значением по электронной почте или в других не-двоичных средах.

#### `sha.copy()`

Возвращает копию («клон») объекта sha. Это может использоваться для эффективного вычисления дайджестов строк, имеющих общую начальную подстроку.

> **См. также**
>
> **[Secure Hash Standard](https://python-all.ru/2.7/library/sha.html)**
>
> Алгоритм Secure Hash определяется документом NIST FIPS PUB 180-2: [Secure Hash Standard](https://python-all.ru/2.7/library/sha.html), опубликованным в августе 2002 года.
>
> **[Cryptographic Toolkit (Secure Hashing)](https://python-all.ru/2.7/library/sha.html)**
>
> Ссылки от NIST на различные сведения о защищённом хэшировании.
