Skip to main content

SHA-3 wrapper (keccak) for Python. The package is a wrapper around the optimized Keccak Code Package, https://github.com/gvanas/KeccakCodePackage .

The module is a standalone version of my SHA-3 module from Python 3.6 (currently under development). The code in sha3module.c has been modified to be compatible with Python 2.7 to 3.5. Python 2.6 and earlier are not supported.

Updates since pysha 0.3

pysha3 1.0 is not compatible with pysha3 0.3!

pysha3 < 1.0 used the old Keccak implementation. During the finalization of SHA3, NIST changed the delimiter suffix from 0x01 to 0x06. The Keccak sponge function stayed the same. pysha3 1.0 provides the previous Keccak hash, too.

Platforms

pysha3 has been successfully tested on several platforms:

  • Linux (GCC, clang) on X86, X86_64 and ARMv6 (little endian)

  • Windows (VS 2008, VS 2010, VS2015) on X86 and X86_64

Usage

The sha3 module contains several constructors for hash objects with a PEP 247 compatible interface. The module provides SHA3, SHAKE and Keccak:

  • sha3_224(), sha3_256(), sha3_384(), and sha3_512()

  • shake_128(), shake_256()

  • keccak_224(), keccak_256(), keccak_384(), and keccak_512()

The sha3 module monkey patches the hashlib module . The monkey patch is automatically activated with the first import of the sha3 module. The hashlib module of Python 3.6 will support the four SHA-3 algorithms and the two SHAKE algorithms on all platforms. Therefore you shouldn’t use the sha3 module directly and rather go through the hashlib interface:

>>> import sys
>>> import hashlib
>>> if sys.version_info < (3, 6):
...    import sha3
>>> s = hashlib.sha3_512()
>>> s.name
'sha3_512'
>>> s.digest_size
64
>>> s.update(b"data")
>>> s.hexdigest()
'ceca4daf960c2bbfb4a9edaca9b8137a801b65bae377e0f534ef9141c8684c0fedc1768d1afde9766572846c42b935f61177eaf97d355fa8dc2bca3fecfa754d'

>>> s = hashlib.shake_256()
>>> s.update(b"data")
>>> s.hexdigest(4)
'c73dbed8'
>>> s.hexdigest(8)
'c73dbed8527f5ae0'
>>> s.hexdigest(16)
'c73dbed8527f5ae0568679f30ecc5cb6'

>>> import sha3
>>> k = sha3.keccak_512()
>>> k.update(b"data")
>>> k.hexdigest()
'1065aceeded3a5e4412e2187e919bffeadf815f5bd73d37fe00d384fe29f55f08462fdabe1007b993ce5b8119630e7db93101d9425d6e352e22ffe3dcb56b825'

Changelog

pysha3 1.0.3-dev

Unreleased

  • Fix typo in documentation (sha3_228 -> sha3_224)

  • Add manylinux1 builder

  • Don’t use privat pystrhex.h

pysha3 1.0.2

Release: 05-Feb-2017

  • Rename internal C extension to _pysha3 to avoild conflict with Python 3.6’ _sha3 extension.

pysha3 1.0.1

Release: 24-Jan-2017

  • Fix github.org -> github.com (Pi Delport)

  • Fix endianness checks for Python 2 (William Grant)

  • Fix changelog, the Christmas release was 1.0.0, not 1.1.0

pysha3 1.0.0

Release date: 24-Dec-2016

  • Synchronize with Python 3.6.0 release

  • Move all backport related additions to backport.inc

  • Fix flake8 violations

pysha3 1.0b1

Release date: 01-May-2016

  • Update backend to use the latest Keccak Code Package. pysha3 now implements the official NIST standard. The old Keccak hashes are available with keccak prefix.

  • Add SHAKE support.

  • All sha3, shake and keccak variants are separate types instead of factory functions that return the same type.

  • Drop Python 2.6 and Python 3.0 to 3.3 support.

  • Fix typo that disabled threading optimization.

  • Add vector files for additional tests.

  • Add experimental HMAC support based on examples from http://wolfgang-ehrhardt.de/hmac-sha3-testvectors.html .

  • Test hashing of unaligned data.

  • Add ISO C11 memset_s() function as _Py_memset_s() in order to securely wipe memory that holds sensitive data. The page https://www.securecoding.cert.org/confluence/display/seccode/MSC06-C.+Be+aware+of+compiler+optimization+when+dealing+with+sensitive+data explains the motivation for memset_s().

  • Add tox support.

  • Add Travis and appveyor integration.

  • Add _capacity_bits, _rate_bits and _suffix attributes for diagnostic purposes.

pysha3 0.3

Release date: 14-Oct-2012

  • Fix 64bit big endian support

  • Add workaround for alignment error on 64bit SPARC machine by using the opt32 implementation.

  • block_size now returns NotImplemented to prevent users from using pysha3 with the hmac module.

pysha3 0.2.2

Release date: 07-Oct-2012

  • Re-add brg_endian.h to fix issue on Solaris (big endian platform)

pysha3 0.2.1

Release date: 06-Oct-2012

  • Fix MANIFEST.in to include Makefile and tests.py

  • Add setup.py test command with hack for inplace builds

  • Enhance README.txt and fixed its markup

pysha3 0.2

Release date: 06-Oct-2012

  • Change directory struct to use the same directory layout as Python 3.4.

  • Remove C++ comments from Keccak sources for ANSI C compatibility.

  • Declare all Keccak functions and globals as static to avoid name clashes.

  • Remove alias sha3() for sha3_512().

  • Add block_size attribute. Keccak has a internal sponge size of 1600 bits.

  • Release GIL around SHA3_update() calls.

  • Monkey patch the hashlib module to support, e.g. hashlib.sha3_512() and hashlib.new(“sha3_512”)

  • Release GIL around SHA3_update() when the data exceeds a certain size.

  • Fix build on platforms with an unsigned 64bit integer type (uint64_t). The module falls back to 32bit implementation of Keccak with interleave tables.

pysha3 0.1

Release date: 04-Oct-2012

  • first release

  • based on KeccakReferenceAndOptimized-3.2.zip

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

safe-pysha3-1.0.4.tar.gz (827.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

safe_pysha3-1.0.4-cp313-cp313-musllinux_1_2_x86_64.whl (367.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

safe_pysha3-1.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (190.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

safe_pysha3-1.0.4-cp312-cp312-musllinux_1_2_x86_64.whl (184.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

safe_pysha3-1.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (190.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

safe_pysha3-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl (184.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

safe_pysha3-1.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (190.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

safe_pysha3-1.0.4-cp310-cp310-musllinux_1_2_x86_64.whl (182.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

safe_pysha3-1.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (188.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

safe_pysha3-1.0.4-cp39-cp39-musllinux_1_2_x86_64.whl (182.7 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

safe_pysha3-1.0.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (188.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file safe-pysha3-1.0.4.tar.gz.

File metadata

  • Download URL: safe-pysha3-1.0.4.tar.gz
  • Upload date:
  • Size: 827.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for safe-pysha3-1.0.4.tar.gz
Algorithm Hash digest
SHA256 e429146b1edd198b2ca934a2046a65656c5d31b0ec894bbd6055127f4deaff17
MD5 bb84b7bf16df6f86fbdf07b40eb16f07
BLAKE2b-256 fd7367ba7ed2177b0b17d10665418fb5deafa03d76b8d4b2cb30883b81b00edf

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 224bc7b1fce08301cb4af7dd3d6c48ce1dfc7e97b9c0f1ac8d62aafb92e62a15
MD5 615e8cd180135ef31c5a13321ab976b5
BLAKE2b-256 db49cdb76dd9592117169a4503f50cfa228ca745408ef0412a116638b4b6b262

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cde1eb8c19cd8f0a6e6bbf4903ed5119e700d1d856392435f31d5fed953c1f0a
MD5 e692c29f980b2b97f85c00fc691e5846
BLAKE2b-256 c797812d5bbf90f0c5ef97503f17d19ec3a7e17e7d0e6910182119e601c5e879

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c9f8bb82919a4afcefb9a034809b5f17b58e99b37da90937da2d366cd76bcca4
MD5 4e8e80572eac42e5a3b0a642ed63331a
BLAKE2b-256 49c64540238e4d0fc325e3f5b077f289182536b0355b0bdac4459a65ec20902f

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 941d3c3b19c71c764121e950f44df9bfed5b31d84d04bd1620e9a046a9cb6e17
MD5 5444a38f03a012f04a7c371bb3af755e
BLAKE2b-256 a2f9435b5dd88cc14d983ff1e7b26ddd3621791a0918e580fcb083a166e990a3

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3251f444cf3fd0cffadd71fd3f66cec0354c3c6f5553916c1d7f73fd99c2732b
MD5 636c1dafedaf16b10931a5871b768a4d
BLAKE2b-256 b1a4c85447525e820fcd95e53b2f20696170b02d0ac073bf9c41927c8bff39e2

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9e6253f44cc665d5a07c0bdff84ec9545e28410fac26295f0fac30fdce6245b0
MD5 7d3a42e6b0cc10233a4e51a91c230c68
BLAKE2b-256 e3e53a4d4edd5ed4013c463c3eafe7d2a2e7067c9bd574dfce5fceec0414beb9

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 db16291ea5702dd080e3d3bd65e60aa8c50fb75ccbb58fb4342f44b2bb4dea4f
MD5 666a143096658c64f0cef48debfa9b53
BLAKE2b-256 5832ea3cb628334ef793014fdc29fb4a74df273d37fd9c99e094171fe5d0c057

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 91282e6197cb69d309d87c3682d4926b0316be1146c4e8845b1a8c685173da57
MD5 173527d439f4882b18f7914131570d02
BLAKE2b-256 718bb8ff4b406526bf1b17b4df3fd5f19625d8252ff49ea030a376c13072b043

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c13bca78d8307024f21ea73cd70115f392c21d1b431abc1b63a786217c888e7d
MD5 d0dc5fd2452a2c160caee380dad5dec0
BLAKE2b-256 c44c9bf02f2553c31287d1aa8bf997eda023c72b99bf040cc3d757c22d169c82

See more details on using hashes here.

File details

Details for the file safe_pysha3-1.0.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for safe_pysha3-1.0.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7c39621ea320dbf3ac600da8ce68615f8ed1bfb0cdba34e4aaf8d04513bf35e5
MD5 3948a6f1631fcd78c534a65e3a3c359e
BLAKE2b-256 ac345795f3b267d5c857c47683b32f84ace4c709fe0d96742e8c8ac052340aee

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page