Updated 2017-05-23 23:05:18 by ak

There is no such thing as sha2. The title is intended to cover the family of hashing algorithms beyond sha1.

The sha1 secure hash algorithm produces a digest of 160 bits. This provides 80 bits of security against collisions given the birthday attack (ref). An updated document from NIST [1] specifies a new family of secure hashing algorithms with longer digest lengths, specifically SHA-256, SHA-384, and SHA-512. An additional update also specifies SHA-224 [2].

tcllib now includes a pure-tcl implementation of SHA-224 and SHA-256. For comparison, here are some timing data for the pure-Tcl implementation of all the digests in tcllib
 md4    time: 248 microseconds per iteration using tcl
 md5    time: 275 microseconds per iteration using tcl
 sha1   time: 409 microseconds per iteration using tcl
 rmd128 time: 410 microseconds per iteration using tcl
 rmd160 time: 679 microseconds per iteration using tcl
 sha224 time: 880 microseconds per iteration using tcl
 sha256 time: 894 microseconds per iteration using tcl

RLH - I have the latest ActiveTcl 8.4.9 and I do not see anything about SHA-256/384/512 in the docs. Were those added after the 8.4.9 release? addendum: I installed 8.5 and no sign in the docs about the other SHA stuff.

PT 22-Feb-2005: When I say 'now' above I actually mean today - 22 Feb 2005. You can grab the CVS sources from
  cvs -d:pserver:[email protected]:/cvsroot/tcllib co tcllib/modules/sha1

until we create a new release.

LV 2007 Jan 31 In the latest tcllib, I see a file called tcllib/modules/sha2/sha256.tcl . The top of the page talks about sha1, and the code appears to implement the 224 and 256 bit algorithms. The longer codes don't appear to be there yet. I also don't see anything in the doc pages. Of course, right now, a competition for sha3 is in the works, so perhaps someone stopped because the older stuff have been challenged.

See also sha1, md4, md5, ripemd, cryptkit

See http://code.wikia.com/wiki/SHA_checksum for a place where a Tcl enthusist might consider adding an example of the use of the tcllib module to calculate a sha checksum.

Documentation: https://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/sha1/sha256.html