blob: 76ca20c045b610b9e1978486a29073ebd3e821d5 [file] [log] [blame]
Alex Gaynoraf82d5e2013-10-29 17:07:24 -07001.. hazmat::
Donald Stufftd8f01182013-10-27 16:59:56 -04002
Donald Stuffte51fb932013-10-27 17:26:17 -04003Message Digests
4===============
5
Donald Stufftf04317a2013-10-27 16:44:30 -04006.. currentmodule:: cryptography.hazmat.primitives.hashes
David Reid1f3d7182013-10-22 16:55:18 -07007
David Reid30b16132013-10-31 13:37:24 -07008.. class:: Hash(algorithm)
Matthew Iversen505491b2013-10-19 15:56:17 +11009
David Reid55602982013-11-01 13:34:05 -070010 A cryptographic hash function takes an arbitrary block of data and
11 calculates a fixed-size bit string (a digest), such that different data
12 results (with a high probability) in different digests.
Matthew Iversen505491b2013-10-19 15:56:17 +110013
David Reid55602982013-11-01 13:34:05 -070014 This is an implementation of
15 :class:`cryptography.hazmat.primitives.interfaces.HashContext` meant to
16 be used with
17 :class:`cryptography.hazmat.primitives.interfaces.HashAlgorithm`
18 implementations to provide an incremental interface to calculating
19 various message digests.
Alex Gaynor23d01a22013-10-28 10:14:46 -070020
21 .. doctest::
22
23 >>> from cryptography.hazmat.primitives import hashes
David Reid30b16132013-10-31 13:37:24 -070024 >>> digest = hashes.Hash(hashes.SHA256())
Alex Gaynor23d01a22013-10-28 10:14:46 -070025 >>> digest.update(b"abc")
26 >>> digest.update(b"123")
David Reid30b16132013-10-31 13:37:24 -070027 >>> digest.finalize()
28 'l\xa1=R\xcap\xc8\x83\xe0\xf0\xbb\x10\x1eBZ\x89\xe8bM\xe5\x1d\xb2\xd29%\x93\xafj\x84\x11\x80\x90'
Alex Gaynorf3b06cd2013-10-21 21:49:50 -070029
Paul Kehrer6b9ddeb2013-10-19 12:28:15 -050030 .. method:: update(data)
Matthew Iversen505491b2013-10-19 15:56:17 +110031
Alex Gaynorddc62f02013-10-20 06:14:24 -070032 :param bytes data: The bytes you wish to hash.
Matthew Iversen505491b2013-10-19 15:56:17 +110033
34 .. method:: copy()
35
Paul Kehrer6b9ddeb2013-10-19 12:28:15 -050036 :return: a new instance of this object with a copied internal state.
Matthew Iversen505491b2013-10-19 15:56:17 +110037
David Reid30b16132013-10-31 13:37:24 -070038 .. method:: finalize()
Alex Gaynor14968452013-11-01 14:05:14 -070039
David Reid55602982013-11-01 13:34:05 -070040 Finalize the current context and return the message digest as bytes.
41
42 Once ``finalize`` is called this object can no longer be used.
Matthew Iversen505491b2013-10-19 15:56:17 +110043
44 :return bytes: The message digest as bytes.
45
Matthew Iversen505491b2013-10-19 15:56:17 +110046
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050047SHA-1
Matthew Iversen505491b2013-10-19 15:56:17 +110048~~~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050049
50.. attention::
51
52 NIST has deprecated SHA-1 in favor of the SHA-2 variants. New applications
53 are strongly suggested to use SHA-2 over SHA-1.
54
David Reid1f3d7182013-10-22 16:55:18 -070055.. class:: SHA1()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050056
57 SHA-1 is a cryptographic hash function standardized by NIST. It has a
58 160-bit message digest.
59
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050060SHA-2 Family
Matthew Iversen505491b2013-10-19 15:56:17 +110061~~~~~~~~~~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050062
David Reid1f3d7182013-10-22 16:55:18 -070063.. class:: SHA224()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050064
65 SHA-224 is a cryptographic hash function from the SHA-2 family and
66 standardized by NIST. It has a 224-bit message digest.
67
David Reid1f3d7182013-10-22 16:55:18 -070068.. class:: SHA256()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050069
70 SHA-256 is a cryptographic hash function from the SHA-2 family and
71 standardized by NIST. It has a 256-bit message digest.
72
David Reid1f3d7182013-10-22 16:55:18 -070073.. class:: SHA384()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050074
75 SHA-384 is a cryptographic hash function from the SHA-2 family and
76 standardized by NIST. It has a 384-bit message digest.
77
David Reid1f3d7182013-10-22 16:55:18 -070078.. class:: SHA512()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050079
80 SHA-512 is a cryptographic hash function from the SHA-2 family and
81 standardized by NIST. It has a 512-bit message digest.
82
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050083RIPEMD160
Matthew Iversen505491b2013-10-19 15:56:17 +110084~~~~~~~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050085
David Reid1f3d7182013-10-22 16:55:18 -070086.. class:: RIPEMD160()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050087
88 RIPEMD160 is a cryptographic hash function that is part of ISO/IEC
89 10118-3:2004. It has a 160-bit message digest.
90
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050091Whirlpool
Matthew Iversen505491b2013-10-19 15:56:17 +110092~~~~~~~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050093
David Reid1f3d7182013-10-22 16:55:18 -070094.. class:: Whirlpool()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050095
96 Whirlpool is a cryptographic hash function that is part of ISO/IEC
97 10118-3:2004. It has a 512-bit message digest.
98
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050099MD5
Matthew Iversen505491b2013-10-19 15:56:17 +1100100~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -0500101
102.. warning::
103
104 MD5 is a deprecated hash algorithm that has practical known collision
105 attacks. You are strongly discouraged from using it.
106
David Reid1f3d7182013-10-22 16:55:18 -0700107.. class:: MD5()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -0500108
Paul Kehrer2b9b3012013-10-22 17:09:38 -0500109 MD5 is a deprecated cryptographic hash function. It has a 128-bit message
Paul Kehrer36e7d0d2013-10-18 18:54:40 -0500110 digest and has practical known collision attacks.