OOP API SHA1 and SHA2 implementations. See std.digest.digest for differences between template and OOP API.
These are convenience aliases for std.digest.digest.digest using the SHA implementation.
Template API SHA1/SHA2 implementation. Supports: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 and SHA-512/256.
1 t 2 { 3 //Template API 4 ubyte[20] hash1 = sha1Of("abc"); 5 assert(toHexString(hash1) == "A9993E364706816ABA3E25717850C26C9CD0D89D"); 6 7 ubyte[28] hash224 = sha224Of("abc"); 8 assert(toHexString(hash224) == "23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7"); 9 10 //Feeding data 11 ubyte[1024] data; 12 SHA1 sha1; 13 sha1.start(); 14 sha1.put(data[]); 15 sha1.start(); //Start again 16 sha1.put(data[]); 17 hash1 = sha1.finish(
1 t 2 { 3 //OOP API 4 auto sha1 = new SHA1Digest(); 5 ubyte[] hash1 = sha1.digest("abc"); 6 assert(toHexString(hash1) == "A9993E364706816ABA3E25717850C26C9CD0D89D"); 7 8 auto sha224 = new SHA224Digest(); 9 ubyte[] hash224 = sha224.digest("abc"); 10 assert(toHexString(hash224) == "23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7"); 11 12 //Feeding data 13 ubyte[1024] data; 14 sha1.put(data[]); 15 sha1.reset(); //Start again 16 sha1.put(data[]); 17 hash1 = sha1.finish(
<a href="http://www.boost.org/LICENSE_1_0.txt">Boost License 1.0</a>
CTFE: Digests do not work in CTFE
This has been temporarily added to DAuth since it doesn't exist in Phobos before DMD 2.066: https://github.com/D-Programming-Language/phobos/pull/2129
On DMD 2.066 and up, DAuth uses std.digest.sha *instead* of this module.
Main module: dauth
Computes SHA1 and SHA2 hashes of arbitrary data. SHA hashes are 20 to 64 byte quantities (depending on the SHA algorithm) that are like a checksum or CRC, but are more robust.
SHA2 comes in several different versions, all supported by this module: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 and SHA-512/256.
This module conforms to the APIs defined in std.digest.digest. To understand the differences between the template and the OOP API, see std.digest.digest.
This module publicly imports std.digest.digest and can be used as a stand-alone module.