[Python-Dev] SHA-256 module (original) (raw)

Trevor Perrin trevp at trevp.net
Fri Jul 2 10:54:05 CEST 2004


At 03:52 PM 6/30/2004 -0700, Gregory P. Smith wrote: [...]

The point about SSL being included is interesting. The OpenSSL library provides implementations of all of the important hash algorithms (and uses them in order to implement ssl!). Its hashing code is much better optimized on various architectures than the python module ever will be.

On my P4, OpenSSL SHA-1 looks around 25% faster (75 vs. 60 MB/s).

FWIW, I've changed the patch to support SHA224, 384, and 512. There are "sha256" and "sha512" modules, with an extra function in each module for the truncated algorithm:

from sha256 import sha256, sha224 from sha512 import sha512, sha384

sha256("abc").hexdigest() 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'

sha384("abc").hexdigest() 'cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7'

http://sourceforge.net/tracker/index.php?func=detail&aid=935454&group_id=5470&atid=305470

Since there are some module-level functions and constants (new(), digestsize, blocksize), I like using separate modules instead of sticking everything in 'sha'.

We could also add some simple wrapper modules for sha224 and sha384 to make them appear as top-level modules, like the other ones.

Trevor



More information about the Python-Dev mailing list