SHA3_512Digest

Undocumented in source.
alias SHA3_512Digest = WrapperDigest!SHA3_512

Examples

Test Keccak

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

Meta