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

---

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

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

Этот модуль реализует интерфейс к алгоритму дайджеста сообщений MD5 от RSA (см. также Internet [**RFC 1321**](https://python-all.ru/2.7/library/md5.html)). Его использование довольно просто: используйте [`new()`](https://python-all.ru/2.7/library/new.html#module-new) для создания объекта md5. Затем этому объекту можно передавать произвольные строки с помощью метода `update()`, и в любой момент можно запросить *дайджест* (надёжный вид 128-битной контрольной суммы, также известный как «отпечаток») конкатенации строк, переданных ему на данный момент, с помощью метода `digest()`.

Например, чтобы получить дайджест строки `'Nobody inspects the spammish repetition'`:

```python
>>> import md5
>>> m = md5.new()
>>> m.update("Nobody inspects")
>>> m.update(" the spammish repetition")
>>> m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
```

Более компактно:

```python
>>> md5.new("Nobody inspects the spammish repetition").digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
```

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

#### `md5.digest_size`

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

Модуль md5 предоставляет следующие функции:

#### `md5.new([arg])`

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

#### `md5.md5([arg])`

По причинам обратной совместимости это альтернативное имя функции [`new()`](https://python-all.ru/2.7/library/new.html#module-new).

Объект md5 имеет следующие методы:

#### `md5.update(arg)`

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

#### `md5.digest()`

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

#### `md5.hexdigest()`

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

#### `md5.copy()`

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

> **См. также**
>
> **Модуль [`sha`](https://python-all.ru/2.7/library/sha.html#module-sha)**
>
> Аналогичный модуль, реализующий алгоритм безопасного хеширования (SHA). Алгоритм SHA считается более безопасным хешем.
