View source code
Display the source code in std/digest/sha.d from which this page was generated on
github.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
Module std.digest.sha
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.
Category | Functions |
---|---|
Template API | SHA1
|
OOP API | SHA1Digest |
Helpers | sha1Of |
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
. To understand the
differences between the template and the OOP API, see std.digest.digest
.
std.digest.digest
This module publicly imports
and can be used as a stand-alone
module.
std.digest.digest
CTFE
Digests do not work in CTFE
References
Example
//Template API import std.digest.sha; ubyte[20] hash1 = sha1Of("abc"); assert(toHexString(hash1) == "A9993E364706816ABA3E25717850C26C9CD0D89D"); ubyte[28] hash224 = sha224Of("abc"); assert(toHexString(hash224) == "23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7"); //Feeding data ubyte[1024] data; SHA1 sha1; sha1.start(); sha1.put(data[]); sha1.start(); //Start again sha1.put(data[]); hash1 = sha1.finish();
Example
//OOP API import std.digest.sha; auto sha1 = new SHA1Digest(); ubyte[] hash1 = sha1.digest("abc"); assert(toHexString(hash1) == "A9993E364706816ABA3E25717850C26C9CD0D89D"); auto sha224 = new SHA224Digest(); ubyte[] hash224 = sha224.digest("abc"); assert(toHexString(hash224) == "23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7"); //Feeding data ubyte[1024] data; sha1.put(data[]); sha1.reset(); //Start again sha1.put(data[]); hash1 = sha1.finish();
Functions
Name | Description |
---|---|
sha1Of
|
These are convenience aliases for std.digest.digest.digest using the
SHA implementation.
|
sha224Of
|
These are convenience aliases for std.digest.digest.digest using the
SHA implementation.
|
sha256Of
|
These are convenience aliases for std.digest.digest.digest using the
SHA implementation.
|
sha384Of
|
These are convenience aliases for std.digest.digest.digest using the
SHA implementation.
|
sha512Of
|
These are convenience aliases for std.digest.digest.digest using the
SHA implementation.
|
sha512_224Of
|
These are convenience aliases for std.digest.digest.digest using the
SHA implementation.
|
sha512_256Of
|
These are convenience aliases for std.digest.digest.digest using the
SHA implementation.
|
Structs
Name | Description |
---|---|
SHA
|
Template API SHA1 /SHA2 implementation. Supports: SHA -1, SHA -224, SHA -256,
SHA -384, SHA -512, SHA -512/224 and SHA -512/256.
|
Aliases
Name | Type | Description |
---|---|---|
SHA1
|
SHA!(512,160)
|
SHA alias for SHA -1, hash is ubyte[20]
|
SHA1Digest
|
WrapperDigest!(std.digest.sha.SHA!(512,160).SHA)
|
OOP API SHA1 and SHA2 implementations.
See for differences between template and OOP API.
|
SHA224
|
SHA!(512,224)
|
SHA alias for SHA -224, hash is ubyte[28]
|
SHA224Digest
|
WrapperDigest!(std.digest.sha.SHA!(512,224).SHA)
|
OOP API SHA1 and SHA2 implementations.
See for differences between template and OOP API.
|
SHA256
|
SHA!(512,256)
|
SHA alias for SHA -256, hash is ubyte[32]
|
SHA256Digest
|
WrapperDigest!(std.digest.sha.SHA!(512,256).SHA)
|
OOP API SHA1 and SHA2 implementations.
See for differences between template and OOP API.
|
SHA384
|
SHA!(1024,384)
|
SHA alias for SHA -384, hash is ubyte[48]
|
SHA384Digest
|
WrapperDigest!(std.digest.sha.SHA!(1024,384).SHA)
|
OOP API SHA1 and SHA2 implementations.
See for differences between template and OOP API.
|
SHA512
|
SHA!(1024,512)
|
SHA alias for SHA -512, hash is ubyte[64]
|
SHA512Digest
|
WrapperDigest!(std.digest.sha.SHA!(1024,512).SHA)
|
OOP API SHA1 and SHA2 implementations.
See for differences between template and OOP API.
|
SHA512_224
|
SHA!(1024,224)
|
SHA alias for SHA -512/224, hash is ubyte[28]
|
SHA512_224Digest
|
WrapperDigest!(std.digest.sha.SHA!(1024,224).SHA)
|
OOP API SHA1 and SHA2 implementations.
See for differences between template and OOP API.
|
SHA512_256
|
SHA!(1024,256)
|
SHA alias for SHA -512/256, hash is ubyte[32]
|
SHA512_256Digest
|
WrapperDigest!(std.digest.sha.SHA!(1024,256).SHA)
|
OOP API SHA1 and SHA2 implementations.
See for differences between template and OOP API.
|
Authors
The routines and algorithms are derived from the
Secure Hash Signature Standard (SHS) (FIPS PUB 180-2).
Kai Nacke, Johannes Pfau, Nick Sabalausky