digest! wrappers
ubyte[28] hash224 = sha3_224Of("abc"); assert(hash224 == digest!SHA3_224("abc")); ubyte[32] hash256 = sha3_256Of("abc"); assert(hash256 == digest!SHA3_256("abc")); ubyte[48] hash384 = sha3_384Of("abc"); assert(hash384 == digest!SHA3_384("abc")); ubyte[64] hash512 = sha3_512Of("abc"); assert(hash512 == digest!SHA3_512("abc")); ubyte[16] shakeHash128 = shake128Of("abc"); assert(shakeHash128 == digest!SHAKE128("abc")); ubyte[32] shakeHash256 = shake256Of("abc"); assert(shakeHash256 == digest!SHAKE256("abc"));
Structures
import std.conv : hexString; SHA3_224 dgst_sha3_224; dgst_sha3_224.put(cast(ubyte[]) "abcdef"); dgst_sha3_224.start(); dgst_sha3_224.put(cast(ubyte[]) ""); assert(dgst_sha3_224.finish() == cast(ubyte[]) hexString! "6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7"); SHA3_256 dgst_sha3_256; dgst_sha3_256.put(cast(ubyte[]) "abcdef"); dgst_sha3_256.start(); dgst_sha3_256.put(cast(ubyte[]) ""); assert(dgst_sha3_256.finish() == cast(ubyte[]) hexString! "a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a"); SHA3_384 dgst_sha3_384; dgst_sha3_384.put(cast(ubyte[]) "abcdef"); dgst_sha3_384.start(); dgst_sha3_384.put(cast(ubyte[]) ""); assert(dgst_sha3_384.finish() == cast(ubyte[]) hexString!( "0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2a" ~"c3713831264adb47fb6bd1e058d5f004")); SHA3_512 dgst_sha3_512; dgst_sha3_512.put(cast(ubyte[]) "abcdef"); dgst_sha3_512.start(); dgst_sha3_512.put(cast(ubyte[]) ""); assert(dgst_sha3_512.finish() == cast(ubyte[]) hexString!( "a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a6"~ "15b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26")); SHAKE128 dgst_shake128; dgst_shake128.put(cast(ubyte[]) "abcdef"); dgst_shake128.start(); dgst_shake128.put(cast(ubyte[]) ""); assert(dgst_shake128.finish() == cast(ubyte[]) hexString! "7f9c2ba4e88f827d616045507605853e"); SHAKE256 dgst_shake256; dgst_shake256.put(cast(ubyte[]) "abcdef"); dgst_shake256.start(); dgst_shake256.put(cast(ubyte[]) ""); assert(dgst_shake256.finish() == cast(ubyte[]) hexString! "46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762f");
"Of" wrappers like sha3_224Of
1 import std.conv : hexString; 2 3 immutable string a = "a"; 4 5 auto digest224 = sha3_224Of(a); 6 assert(digest224 == cast(ubyte[]) hexString! 7 "9e86ff69557ca95f405f081269685b38e3a819b309ee942f482b6a8b"); 8 auto digest256 = sha3_256Of(a); 9 assert(digest256 == cast(ubyte[]) hexString! 10 "80084bf2fba02475726feb2cab2d8215eab14bc6bdd8bfb2c8151257032ecd8b"); 11 auto digest384 = sha3_384Of(a); 12 assert(digest384 == cast(ubyte[]) hexString!( 13 "1815f774f320491b48569efec794d249eeb59aae46d22bf77dafe25c5edc28d7"~ 14 "ea44f93ee1234aa88f61c91912a4ccd9")); 15 auto digest512 = sha3_512Of(a); 16 assert(digest512 == cast(ubyte[]) hexString!( 17 "697f2d856172cb8309d6b8b97dac4de344b549d4dee61edfb4962d8698b7fa80"~ 18 "3f4f93ff24393586e28b5b957ac3d1d369420ce53332712f997bd336d09ab02a")); 19 auto digestshake128 = shake128Of(a); 20 assert(digestshake128 == cast(ubyte[]) hexString! 21 "85c8de88d28866bf0868090b3961162b"); 22 auto digestshake256 = shake256Of(a); 23 assert(digestshake256 == cast(ubyte[]) hexString!( 24 "867e2cb04f5a04dcbd592501a5e8fe9ceaafca50255626ca736c138042530ba4")); 25 26 immutable string abc = "abc"; 27 28 digest224 = sha3_224Of(abc); 29 assert(digest224 == cast(ubyte[]) hexString! 30 "e642824c3f8cf24ad09234ee7d3c766fc9a3a5168d0c94ad73b46fdf"); 31 digest256 = sha3_256Of(abc); 32 assert(digest256 == cast(ubyte[]) hexString! 33 "3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532"); 34 digest384 = sha3_384Of(abc); 35 assert(digest384 == cast(ubyte[]) hexString!( 36 "ec01498288516fc926459f58e2c6ad8df9b473cb0fc08c2596da7cf0e49be4b2"~ 37 "98d88cea927ac7f539f1edf228376d25")); 38 digest512 = sha3_512Of(abc); 39 assert(digest512 == cast(ubyte[]) hexString!( 40 "b751850b1a57168a5693cd924b6b096e08f621827444f70d884f5d0240d2712e"~ 41 "10e116e9192af3c91a7ec57647e3934057340b4cf408d5a56592f8274eec53f0")); 42 digestshake128 = shake128Of(abc); 43 assert(digestshake128 == cast(ubyte[]) hexString! 44 "5881092dd818bf5cf8a3ddb793fbcba7"); 45 digestshake256 = shake256Of(abc); 46 assert(digestshake256 == cast(ubyte[]) hexString!( 47 "483366601360a8771c6863080cc4114d8db44530f8f1e1ee4f94ea37e78b5739")); 48 49 immutable string longString = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; 50 51 digest224 = sha3_224Of(longString); 52 assert(digest224 == cast(ubyte[]) hexString! 53 "8a24108b154ada21c9fd5574494479ba5c7e7ab76ef264ead0fcce33"); 54 digest256 = sha3_256Of(longString); 55 assert(digest256 == cast(ubyte[]) hexString! 56 "41c0dba2a9d6240849100376a8235e2c82e1b9998a999e21db32dd97496d3376"); 57 digest384 = sha3_384Of(longString); 58 assert(digest384 == cast(ubyte[]) hexString!( 59 "991c665755eb3a4b6bbdfb75c78a492e8c56a22c5c4d7e429bfdbc32b9d4ad5a"~ 60 "a04a1f076e62fea19eef51acd0657c22")); 61 digest512 = sha3_512Of(longString); 62 assert(digest512 == cast(ubyte[]) hexString!( 63 "04a371e84ecfb5b8b77cb48610fca8182dd457ce6f326a0fd3d7ec2f1e91636d"~ 64 "ee691fbe0c985302ba1b0d8dc78c086346b533b49c030d99a27daf1139d6e75e")); 65 digestshake128 = shake128Of(longString); 66 assert(digestshake128 == cast(ubyte[]) hexString! 67 "1a96182b50fb8c7e74e0a707788f55e9"); 68 digestshake256 = shake256Of(longString); 69 assert(digestshake256 == cast(ubyte[]) hexString!( 70 "4d8c2dd2435a0128eefbb8c36f6f87133a7911e18d979ee1ae6be5d4fd2e3329")); 71 72 ubyte[] onemilliona = new ubyte[1_000_000]; 73 onemilliona[] = 'a'; 74 75 digest224 = sha3_224Of(onemilliona); 76 assert(digest224 == cast(ubyte[]) hexString! 77 "d69335b93325192e516a912e6d19a15cb51c6ed5c15243e7a7fd653c"); 78 digest256 = sha3_256Of(onemilliona); 79 assert(digest256 == cast(ubyte[]) hexString! 80 "5c8875ae474a3634ba4fd55ec85bffd661f32aca75c6d699d0cdcb6c115891c1"); 81 digest384 = sha3_384Of(onemilliona); 82 assert(digest384 == cast(ubyte[]) hexString!( 83 "eee9e24d78c1855337983451df97c8ad9eedf256c6334f8e948d252d5e0e7684"~ 84 "7aa0774ddb90a842190d2c558b4b8340")); 85 digest512 = sha3_512Of(onemilliona); 86 assert(digest512 == cast(ubyte[]) hexString!( 87 "3c3a876da14034ab60627c077bb98f7e120a2a5370212dffb3385a18d4f38859"~ 88 "ed311d0a9d5141ce9cc5c66ee689b266a8aa18ace8282a0e0db596c90b0a7b87")); 89 digestshake128 = shake128Of(onemilliona); 90 assert(digestshake128 == cast(ubyte[]) hexString! 91 "9d222c79c4ff9d092cf6ca86143aa411"); 92 digestshake256 = shake256Of(onemilliona); 93 assert(digestshake256 == cast(ubyte[]) hexString!( 94 "3578a7a4ca9137569cdf76ed617d31bb994fca9c1bbf8b184013de8234dfd13a"));
Convience alias for std.digest.digest using the SHA-3 implementation.