blob: 9bbac2473239ce7ae7b99235aeb4e07b07c8381a [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
Alex Gaynor23d01a22013-10-28 10:14:46 -070010 Abstract base class that implements a common interface for all hash
11 algorithms that follow here.
Matthew Iversen505491b2013-10-19 15:56:17 +110012
Alex Gaynor23d01a22013-10-28 10:14:46 -070013 If ``data`` is provided ``update(data)`` is called upon construction.
14
15 .. doctest::
16
17 >>> from cryptography.hazmat.primitives import hashes
David Reid30b16132013-10-31 13:37:24 -070018 >>> digest = hashes.Hash(hashes.SHA256())
Alex Gaynor23d01a22013-10-28 10:14:46 -070019 >>> digest.update(b"abc")
20 >>> digest.update(b"123")
David Reid30b16132013-10-31 13:37:24 -070021 >>> digest.finalize()
22 '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 -070023
Paul Kehrer6b9ddeb2013-10-19 12:28:15 -050024 .. method:: update(data)
Matthew Iversen505491b2013-10-19 15:56:17 +110025
Alex Gaynorddc62f02013-10-20 06:14:24 -070026 :param bytes data: The bytes you wish to hash.
Matthew Iversen505491b2013-10-19 15:56:17 +110027
28 .. method:: copy()
29
Paul Kehrer6b9ddeb2013-10-19 12:28:15 -050030 :return: a new instance of this object with a copied internal state.
Matthew Iversen505491b2013-10-19 15:56:17 +110031
David Reid30b16132013-10-31 13:37:24 -070032 .. method:: finalize()
Matthew Iversen505491b2013-10-19 15:56:17 +110033
34 :return bytes: The message digest as bytes.
35
Matthew Iversen505491b2013-10-19 15:56:17 +110036
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050037SHA-1
Matthew Iversen505491b2013-10-19 15:56:17 +110038~~~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050039
40.. attention::
41
42 NIST has deprecated SHA-1 in favor of the SHA-2 variants. New applications
43 are strongly suggested to use SHA-2 over SHA-1.
44
David Reid1f3d7182013-10-22 16:55:18 -070045.. class:: SHA1()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050046
47 SHA-1 is a cryptographic hash function standardized by NIST. It has a
48 160-bit message digest.
49
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050050SHA-2 Family
Matthew Iversen505491b2013-10-19 15:56:17 +110051~~~~~~~~~~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050052
David Reid1f3d7182013-10-22 16:55:18 -070053.. class:: SHA224()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050054
55 SHA-224 is a cryptographic hash function from the SHA-2 family and
56 standardized by NIST. It has a 224-bit message digest.
57
David Reid1f3d7182013-10-22 16:55:18 -070058.. class:: SHA256()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050059
60 SHA-256 is a cryptographic hash function from the SHA-2 family and
61 standardized by NIST. It has a 256-bit message digest.
62
David Reid1f3d7182013-10-22 16:55:18 -070063.. class:: SHA384()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050064
65 SHA-384 is a cryptographic hash function from the SHA-2 family and
66 standardized by NIST. It has a 384-bit message digest.
67
David Reid1f3d7182013-10-22 16:55:18 -070068.. class:: SHA512()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050069
70 SHA-512 is a cryptographic hash function from the SHA-2 family and
71 standardized by NIST. It has a 512-bit message digest.
72
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050073RIPEMD160
Matthew Iversen505491b2013-10-19 15:56:17 +110074~~~~~~~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050075
David Reid1f3d7182013-10-22 16:55:18 -070076.. class:: RIPEMD160()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050077
78 RIPEMD160 is a cryptographic hash function that is part of ISO/IEC
79 10118-3:2004. It has a 160-bit message digest.
80
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050081Whirlpool
Matthew Iversen505491b2013-10-19 15:56:17 +110082~~~~~~~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050083
David Reid1f3d7182013-10-22 16:55:18 -070084.. class:: Whirlpool()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050085
86 Whirlpool is a cryptographic hash function that is part of ISO/IEC
87 10118-3:2004. It has a 512-bit message digest.
88
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050089MD5
Matthew Iversen505491b2013-10-19 15:56:17 +110090~~~
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050091
92.. warning::
93
94 MD5 is a deprecated hash algorithm that has practical known collision
95 attacks. You are strongly discouraged from using it.
96
David Reid1f3d7182013-10-22 16:55:18 -070097.. class:: MD5()
Paul Kehrer36e7d0d2013-10-18 18:54:40 -050098
Paul Kehrer2b9b3012013-10-22 17:09:38 -050099 MD5 is a deprecated cryptographic hash function. It has a 128-bit message
Paul Kehrer36e7d0d2013-10-18 18:54:40 -0500100 digest and has practical known collision attacks.