blob: 17e1ab809a81682c7e372193300ef4cf45166bd0 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001
2:mod:`md5` --- MD5 message digest algorithm
3===========================================
4
5.. module:: md5
6 :synopsis: RSA's MD5 message digest algorithm.
Georg Brandl7f758c42007-08-15 18:41:25 +00007 :deprecated:
Georg Brandl8ec7f652007-08-15 14:28:01 +00008
9
10.. deprecated:: 2.5
11 Use the :mod:`hashlib` module instead.
12
13.. index::
14 single: message digest, MD5
15 single: checksum; MD5
16
17This module implements the interface to RSA's MD5 message digest algorithm (see
18also Internet :rfc:`1321`). Its use is quite straightforward: use :func:`new`
19to create an md5 object. You can now feed this object with arbitrary strings
20using the :meth:`update` method, and at any point you can ask it for the
21:dfn:`digest` (a strong kind of 128-bit checksum, a.k.a. "fingerprint") of the
22concatenation of the strings fed to it so far using the :meth:`digest` method.
23
24For example, to obtain the digest of the string ``'Nobody inspects the spammish
Georg Brandle8f1b002008-03-22 22:04:10 +000025repetition'``:
Georg Brandl8ec7f652007-08-15 14:28:01 +000026
27 >>> import md5
28 >>> m = md5.new()
29 >>> m.update("Nobody inspects")
30 >>> m.update(" the spammish repetition")
31 >>> m.digest()
32 '\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
33
Georg Brandle8f1b002008-03-22 22:04:10 +000034More condensed:
Georg Brandl8ec7f652007-08-15 14:28:01 +000035
36 >>> md5.new("Nobody inspects the spammish repetition").digest()
37 '\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
38
39The following values are provided as constants in the module and as attributes
40of the md5 objects returned by :func:`new`:
41
42
43.. data:: digest_size
44
45 The size of the resulting digest in bytes. This is always ``16``.
46
47The md5 module provides the following functions:
48
49
50.. function:: new([arg])
51
52 Return a new md5 object. If *arg* is present, the method call ``update(arg)``
53 is made.
54
55
56.. function:: md5([arg])
57
58 For backward compatibility reasons, this is an alternative name for the
59 :func:`new` function.
60
61An md5 object has the following methods:
62
63
64.. method:: md5.update(arg)
65
66 Update the md5 object with the string *arg*. Repeated calls are equivalent to a
67 single call with the concatenation of all the arguments: ``m.update(a);
68 m.update(b)`` is equivalent to ``m.update(a+b)``.
69
70
71.. method:: md5.digest()
72
73 Return the digest of the strings passed to the :meth:`update` method so far.
74 This is a 16-byte string which may contain non-ASCII characters, including null
75 bytes.
76
77
78.. method:: md5.hexdigest()
79
80 Like :meth:`digest` except the digest is returned as a string of length 32,
81 containing only hexadecimal digits. This may be used to exchange the value
82 safely in email or other non-binary environments.
83
84
85.. method:: md5.copy()
86
87 Return a copy ("clone") of the md5 object. This can be used to efficiently
88 compute the digests of strings that share a common initial substring.
89
90
91.. seealso::
92
93 Module :mod:`sha`
94 Similar module implementing the Secure Hash Algorithm (SHA). The SHA algorithm
95 is considered a more secure hash.
96