DEPRECATED: Please see the new project site for SkeinLib!
THIS PROJECT WILL BE DELETED AFTER APRIL 30TH, 2013. Go to the new project to see a better version.
This project was to encompass a cryptographic hash function that is in consideration for NIST's SHA-3 competition. At its core, it uses the ThreeFish block cipher, which is described in the same paper as Skein. This implementation exposes the ThreeFish
transformation functions for purposes of research and testing. They can be used for encryption but given the untested nature of the algorithms at the present time, I recommend against that for anything beyond research.
This implementation, as submitted, follows standard 1.2 (attached PDF) of the Skein paper (as of February 2009), but this particular build has been abandoned in favor of another implementation (written by the same coder) which is a more modular approach, more
in line with the white paper. The newer implementation is also VS 2010, this implementation is VS 2008.
A PRNG (Pseudo-random Number Generator) is also implemented, but that is a little vague in the white paper, so this needs more work and guidance. A few other PRNG projects have sprung up in Python and other languages around (see skein-hash.info link below).
I have not had the chance to test the results of this project against theirs, and would welcome a chance to do so.
Bruce Schneier's site where he and his team first released Skein.
Home site of Skein and a spring-board for information not made available here.
This is also one of the first places to look for updates to the core algorithm and any papers or attacks published surrounding Skein.
Information regarding NIST's SHA-3 Competition
The skein_golden_kat_internals.txt file indicates a series of "known answer tests" as part of the NIST submission package. Use these for testing the outputs against the standard.
Because the original developers released the algorithm and process into the public domain
, I am releasing this code as well. Check the License tab above for details on what restrictions CodePlex places on code posted here. As for myself and the
development team (per the specification), you are free to do what you will assuming your country of residence has no specific legal restrictions.
This hash function is STILL UNDERGOING PEER REVIEW
and should be considered preliminary.
This implementation is preliminary, and has been abandoned in favor of a more modular approach, and also needs peer-review.
CONSIDER IT GREEN AND SUSPECT BEFORE USING IT IN A LIVE ENVIRONMENT