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.3.tar.gz (827.6 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.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (151.8 kB view details)

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

safe_pysha3-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (150.6 kB view details)

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

safe_pysha3-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (150.4 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.3.tar.gz.

File metadata

  • Download URL: safe-pysha3-1.0.3.tar.gz
  • Upload date:
  • Size: 827.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for safe-pysha3-1.0.3.tar.gz
Algorithm Hash digest
SHA256 29dfa56fdb799decb9d01bdd7dbc0f2806f4468d2c296f83b6e37d86531917c2
MD5 0747a585025e464bf8133b380669f77f
BLAKE2b-256 1d465e64df1daaa576d49dd80038c300c34c8c0714ef12a55fa7b1a227b6edec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for safe_pysha3-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6bc9d3b2d127521a50ebf3a58e01feaeae19c94184a140b62780ce019bb5b1f0
MD5 dca76b723adc6a2673aba73891677e47
BLAKE2b-256 5ebc8dc1119ac3f85b9b5dfc6cc67e72dd628a02c8324075f62c9c392a2cdcb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for safe_pysha3-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ddc10fc2eb491a5105c0deb1cbf4a6eabd5719256b65585b9b721d9d521eda96
MD5 ed4afeca07d250a3059330a67217b832
BLAKE2b-256 fa957aece1766830f606023c56f267d31d0eab099ecd99a8e650f27443a8c5af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for safe_pysha3-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a0ba257f66291b281f4c3259ae2391d19445a6bdf18e8b79f2405257a8db0394
MD5 6b1d744376de0d64a271d1e90f69c032
BLAKE2b-256 8be8c9d8614ac308e49e4fe77f82084325d8f6d7013c395f995731d0dcdeeec5

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 Sentry Error logging StatusPage Status page