SHA3_512Digest

Undocumented in source.
alias SHA3_512Digest = WrapperDigest!SHA3_512

Examples

Test Keccak

1 import dcrypt.encoders.hex;
2 
3 string msg1600 = x"8C3798E51BC68482D7337D3ABB75DC9FFE860714A9AD73551E120059860DDE24AB87327222B64CF774415A70F724CDF270DE3FE47DDA07B61C9EF2A3551F45A5584860248FABDE676E1CD75F6355AA3EAEABE3B51DC813D9FB2EAA4F0F1D9F834D7CAD9C7C695AE84B329385BC0BEF895B9F1EDF44A03D4B410CC23A79A6B62E4F346A5E8DD851C2857995DDBF5B2D717AEB847310E1F6A46AC3D26A7F9B44985AF656D2B7C9406E8A9E8F47DCB4EF6B83CAACF9AEFB6118BFCFF7E44BEF6937EBDDC89186839B77";
4 
5 immutable string[] plaintexts = [x"",x"",x"",x"",
6 	// https://cloud.github.com/downloads/johanns/sha3/KeccakTestVectors.zip
7 	x"CC",
8 	msg1600,
9 	x"CC",
10 	msg1600,
11 	x"CC",
12 	msg1600,
13 	x"CC",
14 	msg1600
15 ];
16 
17 immutable string[] hexHashes = [
18 	x"f71837502ba8e10837bdd8d365adb85591895602fc552b48b7390abd",
19 	x"c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
20 	x"2c23146a63a29acf99e73b88f8c24eaa7dc60aa771780ccc006afbfa8fe2479b2dd2b21362337441ac12b515911957ff",
21 	x"0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e",
22 	// https://cloud.github.com/downloads/johanns/sha3/KeccakTestVectors.zip
23 	x"A9CAB59EB40A10B246290F2D6086E32E3689FAF1D26B470C899F2802",
24 	x"1029CA117957D80F3C859E8394DD34969331CA3BCEDC436B1EAB0849",
25 	x"EEAD6DBFC7340A56CAEDC044696A168870549A6A7F6F56961E84A54BD9970B8A",
26 	x"E83EA21F5BC0976953AF86069A10EB6024A1AC59D609688E4A9759BB8B6C9441",
27 	x"1B84E62A46E5A201861754AF5DC95C4A1A69CAF4A796AE405680161E29572641F5FA1E8641D7958336EE7B11C58F73E9",
28 	x"B5A7160112E0825A7C03643BEB98B1FC2549B81F01C3C4271DFF99BE57D472A7FAD133808D7D2D414D6011E9A2E8DFEC",
29 	x"8630C13CBD066EA74BBE7FE468FEC1DEE10EDC1254FB4C1B7C5FD69B646E44160B8CE01D05A0908CA790DFB080F4B513BC3B6225ECE7A810371441A5AC666EB9",
30 	x"2A11CB6921EA662A39DDEE7982E3CF5B317195661D5505AD04D11EE23E178ED65F3E06A7F096F4EAF1FF6A09239CF5A0A39DC9F4C92AF63FDF7211E1CF467653",
31 
32 ];
33 
34 
35 for(size_t i = 0; i < plaintexts.length; ++i) {
36 	const (ubyte)[] plain = cast(const ubyte[]) plaintexts[i];
37 	const ubyte[] expectedHash = cast(const ubyte[]) hexHashes[i];
38 	ubyte[] actualHash;
39 
40 	switch(expectedHash.length*8) {
41 		case 224: 
42 			Keccak224 k;
43 			k.put(plain);
44 			actualHash = k.finish!224();
45 			break;
46 		case 256: 
47 			Keccak256 k;
48 			k.put(plain);
49 			actualHash = k.finish!256();
50 			break;
51 		case 384: 
52 			Keccak384 k;
53 			k.put(plain);
54 			actualHash = k.finish!384();
55 			break;
56 		case 512: 
57 			Keccak512 k;
58 			k.put(plain);
59 			actualHash = k.finish!512();
60 			break;
61 		default: assert(0);
62 	}
63 
64 	assert(expectedHash == actualHash, "produced wrong hash: " ~ toHexStr(actualHash)
65 		~ " instead of " ~ toHexStr(expectedHash));
66 }

Meta