Test Keccak
import dcrypt.util.encoders.hex; immutable string[] plaintexts = ["","","","", "00", "0000000000000000000000000000000000000000000000000000000000000000", "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ]; immutable uint[] bitLen = [224,256,384,512, 256, 256,512]; immutable string[] hexHashes = [ "f71837502ba8e10837bdd8d365adb85591895602fc552b48b7390abd", "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "2c23146a63a29acf99e73b88f8c24eaa7dc60aa771780ccc006afbfa8fe2479b2dd2b21362337441ac12b515911957ff", "0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e", "bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a", // 00 "290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", // 32x0 "a8620b2ebeca41fbc773bb837b5e724d6eb2de570d99858df0d7d97067fb8103b21757873b735097b35d3bea8fd1c359a9e8a63c1540c76c9784cf8d975e995c", ]; Digest[] digests = [ new Keccak224Digest, new Keccak256Digest, new Keccak384Digest, new Keccak512Digest, new Keccak256Digest, new Keccak256Digest, new Keccak512Digest ]; for(size_t i = 0; i < plaintexts.length; ++i) { Digest digest = digests[i]; ubyte[] plain = hexDecode(plaintexts[i]); ubyte[] expectedHash = hexDecode(hexHashes[i]); digest.start(); digest.put(plain); ubyte[] actualHash = digest.doFinal(); assert(expectedHash == actualHash, "produced wrong hash: " ~ toHexStr(actualHash) ~ " instead of " ~ toHexStr(expectedHash)); }