SHA2 in Haskell


Last night I implemented the SHA-2 hash functions in Haskell.

When writing in a function language, one often writes fun, odd bits of code. Today’s example is foldr (flip (.)) id (zipWith mkStep3 ks ws) h. In this example, mkStep3 is a function taking three parameters. So the result of zipWith mkStep3 ks ws is a list of functions that take one parameter. These all need to be composed together. I first composed them together with foldr (.) id, but I found out my functions were composed the wrong way. I wasn’t so keen on foldr (.) id $ reverse $ (zipWith mkStep3 ks ws), so I settled on foldr (flip (.)) id (zipWith mkStep3 ks ws) as above.

The SHA-2 functions are patented by the NSA. However, since software is not patentable, I don’t really care at the moment.


, ,

Russell O’Connor: contact me