SHA-3 (Keccak) for Python 2.6 - 3.4
Project description
pysha3
SHA-3 wrapper (keccak) for Python. The package is a wrapper around the optimized reference implementation from http://keccak.noekeon.org/ . Only the optimizations for 32 and 64bit platforms are used. The optimized SSE and ARM assembly variants are ignored for now.
The module is a standalone version of the SHA-3 implemention of Python 3.4 (currently under development).
Usage
The sha3 module contains several constructors for hash objects with a PEP 247 compatible interface. The module provides sha3_228(), sha3_256(), sha3_384(), and sha3_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.4 will support the four SHA-3 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, 4): ... import sha3 >>> s = hashlib.new("sha3_512") >>> s = hashlib.sha3_512() # alternative >>> s.name 'sha3_512' >>> s.digest_size 64 >>> s.update(b"data") >>> s.hexdigest() '1065aceeded3a5e4412e2187e919bffeadf815f5bd73d37fe00d384fe29f55f08462fdabe1007b993ce5b8119630e7db93101d9425d6e352e22ffe3dcb56b825'
Changelog
pysha3 0.2.1
Release date: 06-Oct-2012
fixed MANIFEST.in to include Makefile and tests.py
added setup.py test command with hack for inplace builds
enhanced 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for pysha3-0.2.1.win-amd64-py3.3.exe
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21299d902cc4295b7ab813861a3882222b2fdc2e2b74d41441098c54982e3c91 |
|
MD5 | 61e7ba52fb0f992514fe4fe8721318a3 |
|
BLAKE2b-256 | 31009729fc56970abee7602812bd3416c65d4a755af039fb1d4f9472b58e9977 |
Hashes for pysha3-0.2.1.win-amd64-py3.2.exe
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b92dc6c6dfab36c01ccded121d7afd5764c5ad32f0c5494e79e867ab1143994 |
|
MD5 | 54934ed22b2ede9a22b3f503b180f68e |
|
BLAKE2b-256 | 71953ea71eb96cb96beac02868bb5511ee1040f8380c9cd44d61cb12e6135f3d |
Hashes for pysha3-0.2.1.win-amd64-py2.7.exe
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d362fc2e60f78d4dc5567cccccbd51ca5c3208dcc29bc28358a0017e44c2b14 |
|
MD5 | e306d2f45c96fa0196cd8bcad2644c3c |
|
BLAKE2b-256 | 95f89c8edb6fc6990cc5b4d75e0d32220d154705b6164cfba536d86d0d8c9540 |
Hashes for pysha3-0.2.1.win-amd64-py2.6.exe
Algorithm | Hash digest | |
---|---|---|
SHA256 | 512299bb4d649d5ab475cda65234e302c3381071165314f39888837e1c856773 |
|
MD5 | 4ca533cc8773cad1f7ab1c0571c85107 |
|
BLAKE2b-256 | d0a530ea99adf631e16c092585ddaa636b27431eeae66b0676db8eceb291e78f |
Comments from sha3module header
The code is based on KeccakReferenceAndOptimized-3.2.zip from 29 May 2012.
C++ comments are converted to ANSI C comments.
All functions and globals are declared static.
The typedef for UINT64 is commented out.
brg_endian.h is removed.
KeccakF-1600-opt[32|64]-settings.h are commented out
Some unused functions are commented out to silence compiler warnings.
In order to avoid name clashes with other software I have to declare all Keccak functions and global data as static. The C code is directly included into this file in order to access the static functions.
Keccak can be tuned with several paramenters. I try to explain all options as far as I understand them. The reference implementation also contains assembler code for ARM platforms (NEON instructions).
Common
64bit platforms
default settings of common options
Additional optimiation instructions (disabled by default):
When neither UseSSE, UseMMX nor UseXOP is configured, ROL64 (rotate left 64) is implemented as:
UseBebigokimisa can’t be used in combination with UseSSE, UseMMX or UseXOP. UseOnlySIMD64 has no effect unless UseSSE is specified.
Tests have shown that UseSSE + UseOnlySIMD64 is about three to four times SLOWER than UseBebigokimisa. UseSSE and UseMMX are about two times slower. (tested by CH and AP)
32bit platforms
default settings of common options