File: hash.rst

package info (click to toggle)
python3.13 3.13.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 121,732 kB
  • sloc: python: 707,177; ansic: 655,263; xml: 31,250; sh: 5,844; cpp: 4,326; makefile: 1,986; objc: 787; lisp: 502; javascript: 213; asm: 75; csh: 12
file content (163 lines) | stat: -rw-r--r-- 3,981 bytes parent folder | download
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
158
159
160
161
162
163
.. highlight:: c

PyHash API
----------

See also the :c:member:`PyTypeObject.tp_hash` member and :ref:`numeric-hash`.

.. c:type:: Py_hash_t

   Hash value type: signed integer.

   .. versionadded:: 3.2


.. c:type:: Py_uhash_t

   Hash value type: unsigned integer.

   .. versionadded:: 3.2


.. c:macro:: Py_HASH_ALGORITHM

   A numerical value indicating the algorithm for hashing of :class:`str`,
   :class:`bytes`, and :class:`memoryview`.

   The algorithm name is exposed by :data:`sys.hash_info.algorithm`.

   .. versionadded:: 3.4


.. c:macro:: Py_HASH_FNV
             Py_HASH_SIPHASH24
             Py_HASH_SIPHASH13

   Numerical values to compare to :c:macro:`Py_HASH_ALGORITHM` to determine
   which algorithm is used for hashing. The hash algorithm can be configured
   via the configure :option:`--with-hash-algorithm` option.

   .. versionadded:: 3.4
      Add :c:macro:`!Py_HASH_FNV` and :c:macro:`!Py_HASH_SIPHASH24`.

   .. versionadded:: 3.11
      Add :c:macro:`!Py_HASH_SIPHASH13`.


.. c:macro:: Py_HASH_CUTOFF

   Buffers of length in range ``[1, Py_HASH_CUTOFF)`` are hashed using DJBX33A
   instead of the algorithm described by :c:macro:`Py_HASH_ALGORITHM`.

   - A :c:macro:`!Py_HASH_CUTOFF` of 0 disables the optimization.
   - :c:macro:`!Py_HASH_CUTOFF` must be non-negative and less or equal than 7.

   32-bit platforms should use a cutoff smaller than 64-bit platforms because
   it is easier to create colliding strings. A cutoff of 7 on 64-bit platforms
   and 5 on 32-bit platforms should provide a decent safety margin.

   This corresponds to the :data:`sys.hash_info.cutoff` constant.

   .. versionadded:: 3.4


.. c:macro:: PyHASH_MODULUS

   The `Mersenne prime <https://en.wikipedia.org/wiki/Mersenne_prime>`_ ``P = 2**n -1``,
   used for numeric hash scheme.

   This corresponds to the :data:`sys.hash_info.modulus` constant.

   .. versionadded:: 3.13


.. c:macro:: PyHASH_BITS

   The exponent ``n`` of ``P`` in :c:macro:`PyHASH_MODULUS`.

   .. versionadded:: 3.13


.. c:macro:: PyHASH_MULTIPLIER

   Prime multiplier used in string and various other hashes.

   .. versionadded:: 3.13


.. c:macro:: PyHASH_INF

   The hash value returned for a positive infinity.

   This corresponds to the :data:`sys.hash_info.inf` constant.

   .. versionadded:: 3.13


.. c:macro:: PyHASH_IMAG

   The multiplier used for the imaginary part of a complex number.

   This corresponds to the :data:`sys.hash_info.imag` constant.

   .. versionadded:: 3.13


.. c:type:: PyHash_FuncDef

   Hash function definition used by :c:func:`PyHash_GetFuncDef`.

   .. c:member:: Py_hash_t (*const hash)(const void *, Py_ssize_t)

      Hash function.

   .. c:member:: const char *name

      Hash function name (UTF-8 encoded string).

      This corresponds to the :data:`sys.hash_info.algorithm` constant.

   .. c:member:: const int hash_bits

      Internal size of the hash value in bits.

      This corresponds to the :data:`sys.hash_info.hash_bits` constant.

   .. c:member:: const int seed_bits

      Size of seed input in bits.

      This corresponds to the :data:`sys.hash_info.seed_bits` constant.

   .. versionadded:: 3.4


.. c:function:: PyHash_FuncDef* PyHash_GetFuncDef(void)

   Get the hash function definition.

   .. seealso::
      :pep:`456` "Secure and interchangeable hash algorithm".

   .. versionadded:: 3.4


.. c:function:: Py_hash_t Py_HashPointer(const void *ptr)

   Hash a pointer value: process the pointer value as an integer (cast it to
   ``uintptr_t`` internally). The pointer is not dereferenced.

   The function cannot fail: it cannot return ``-1``.

   .. versionadded:: 3.13

.. c:function:: Py_hash_t PyObject_GenericHash(PyObject *obj)

   Generic hashing function that is meant to be put into a type
   object's ``tp_hash`` slot.
   Its result only depends on the object's identity.

   .. impl-detail::
      In CPython, it is equivalent to :c:func:`Py_HashPointer`.

   .. versionadded:: 3.13