Render a SHA265 message digest into the somewhat unusual base32 scheme
used by Nix. That algorithm is remarkable, because it twists the bits of the
input buffer around quite a bit before grouping them into quintets that are
then translated into the target alphabet 0123456789abcdfghijklmnpqrsvwxyz.
Basically, the sequence of bits
255 254 253 252 251 250 249 248 ... 7 6 5 4 3 2 1 0
|_______________________________| |______________________|
byte 0 byte 31is split into quintets as follows:
7 6 5 4 3 2 1 0 14 13 12 ... 251 252 253 254 255
|______________| |_____________| |____________| |___________________|
quintet 0 quintet 1 quintet 2 quintet 51before the encoding takes place. This leads to somewhat surprising results:
printSHA256 (packHex "0000000000000000000000000000000000000000000000000000000000000080")"1000000000000000000000000000000000000000000000000000"printSHA256 (packHex "0000000000000000000000000000000000000000000000000000000000000001")"0080000000000000000000000000000000000000000000000000"printSHA256 (packHex "7459ca5c6e117538122f04caf3dbfc58303028c26c58943430c16ff28a3b1d49")"0j8x7f5g4vy160s98n3cq8l30c2qzkdz7jh45w93hx8idrfclnbl"