summaryrefslogtreecommitdiff
path: root/api/2.6/Crypto.Hash-module.html
blob: 6f31663b0faeb54d227218391bc7cb86411141ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>Crypto.Hash</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="Crypto-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a href="http://www.pycrypto.org/">PyCrypto.org</a></th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="Crypto-module.html">Package&nbsp;Crypto</a> ::
        Package&nbsp;Hash
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="Crypto.Hash-module.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== PACKAGE DESCRIPTION ==================== -->
<h1 class="epydoc">Package Hash</h1><p class="nomargin-top"></p>
<p>Hashing algorithms</p>
<p>Hash functions take arbitrary binary strings as input, and produce a random-like output
of fixed size that is dependent on the input; it should be practically infeasible
to derive the original input data given only the hash function's
output. In other words, the hash function is <em>one-way</em>.</p>
<p>It should also not be practically feasible to find a second piece of data
(a <em>second pre-image</em>) whose hash is the same as the original message
(<em>weak collision resistance</em>).</p>
<p>Finally, it should not be feasible to find two arbitrary messages with the
same hash (<em>strong collision resistance</em>).</p>
<p>The output of the hash function is called the <em>digest</em> of the input message.
In general, the security of a hash function is related to the length of the
digest. If the digest is <em>n</em> bits long, its security level is roughly comparable
to the the one offered by an <em>n/2</em> bit encryption algorithm.</p>
<p>Hash functions can be used simply as a integrity check, or, in
association with a public-key algorithm, can be used to implement
digital signatures.</p>
<p>The hashing modules here all support the interface described in <a class="rst-reference external" href="http://www.python.org/dev/peps/pep-0247/" target="_top">PEP
247</a> , &quot;API for Cryptographic Hash Functions&quot;.</p>

<!-- ==================== SUBMODULES ==================== -->
<a name="section-Submodules"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td align="left" colspan="2" class="table-header">
    <span class="table-header">Submodules</span></td>
</tr>
  <tr><td class="summary">
  <ul class="nomargin">
    <li> <strong class="uidlink"><a href="Crypto.Hash.HMAC-module.html">Crypto.Hash.HMAC</a></strong>: <em class="summary">HMAC (Hash-based Message Authentication Code) algorithm</em>    </li>
    <li> <strong class="uidlink"><a href="Crypto.Hash.MD2-module.html">Crypto.Hash.MD2</a></strong>: <em class="summary">MD2 cryptographic hash algorithm.</em>    </li>
    <li> <strong class="uidlink"><a href="Crypto.Hash.MD4-module.html">Crypto.Hash.MD4</a></strong>: <em class="summary">MD4 cryptographic hash algorithm.</em>    </li>
    <li> <strong class="uidlink"><a href="Crypto.Hash.MD5-module.html">Crypto.Hash.MD5</a></strong>: <em class="summary">MD5 cryptographic hash algorithm.</em>    </li>
    <li> <strong class="uidlink"><a href="Crypto.Hash.RIPEMD-module.html">Crypto.Hash.RIPEMD</a></strong>: <em class="summary">RIPEMD-160 cryptographic hash algorithm.</em>    </li>
    <li> <strong class="uidlink"><a href="Crypto.Hash.SHA-module.html">Crypto.Hash.SHA</a></strong>: <em class="summary">SHA-1 cryptographic hash algorithm.</em>    </li>
    <li> <strong class="uidlink"><a href="Crypto.Hash.SHA224-module.html">Crypto.Hash.SHA224</a></strong>: <em class="summary">SHA-224 cryptographic hash algorithm.</em>    </li>
    <li> <strong class="uidlink"><a href="Crypto.Hash.SHA256-module.html">Crypto.Hash.SHA256</a></strong>: <em class="summary">SHA-256 cryptographic hash algorithm.</em>    </li>
    <li> <strong class="uidlink"><a href="Crypto.Hash.SHA384-module.html">Crypto.Hash.SHA384</a></strong>: <em class="summary">SHA-384 cryptographic hash algorithm.</em>    </li>
    <li> <strong class="uidlink"><a href="Crypto.Hash.SHA512-module.html">Crypto.Hash.SHA512</a></strong>: <em class="summary">SHA-512 cryptographic hash algorithm.</em>    </li>
    <li class="private"> <strong class="uidlink"><a href="Crypto.Hash.hashalgo-module.html" onclick="show_private();">Crypto.Hash.hashalgo</a></strong>    </li>
  </ul></td></tr>
</table>

<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="Crypto-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a href="http://www.pycrypto.org/">PyCrypto.org</a></th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0.1 on Thu May 24 09:02:36 2012
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>