
On Tue, Jun 29, 2004 at 02:40:21PM -0400, Barry Warsaw wrote:
On Tue, 2004-06-29 at 02:25, Raymond Hettinger wrote:
We may consider whether adding, over time, a bunch of modules named shaXXX doesn't mean we should start thinking about a way to group all
On Tue, Jun 29, 2004 at 04:10:22PM +0100, Armin Rigo wrote: these
algorithms into a single module.
It would be possible to change the signature of sha.new() to sha.new('string', bits=256) and have all the variants in one module, if we want SHA-256 but not a separate module.
That seems like a very nice solution to me.
+1
BTW, would it raise an exception (ValueError?) for bit sizes it doesn't know about?
I'd sure hope so. Personally i prefer to not use a bits argument as it passing a function reference to a hash algorithm needlessly require a lambda. Instead do as someone else suggested and make a sha.sha256() function: do_thing_and_hash(things=thingList, hashmaker=lambda x: sha.new(x, bits=256)) vs do_thing_and_hash(things=thingList, hashmaker=sha.sha256) The only official SHAs defined are sha1, sha256, sha384 and sha512 and are typically referred to as a single unit name of "sha1" or "sha512" not "the SHA which is 512 bits." using a simple function name that is the common spoken name is nicer. Perl uses a top level module to contain all its hash functions (Digest::MD5, Digest::SHA1, etc). I agree that we should do that same (as someone else already suggested). Realistically, lets not reinvent the wheel. See the pycrypto module: http://www.amk.ca/python/code/crypto.html MD5 and SHA1 are the most common types of hashes in use today; those make sense to have in the base python distro. Does sha256 or greater? If someone needs something better than sha1 there is a good chance that they are also dealing with symmetric encryption or public key authentication and would need a module like pycrypto anyways. -g