View source code
Display the source code in std/digest/sha.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
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.
Struct std.digest.sha.SHA
Template API SHA1/SHA2 implementation. Supports: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 and SHA-512/256.
struct SHA(uint hashBlockSize, uint digestSize)
;
The hashBlockSize and digestSize are in bits. However, it's likely easier to simply use the convenience aliases: SHA1, SHA224, SHA256, SHA384, SHA512, SHA512_224 and SHA512_256.
See std
for differences between template and OOP API.
Methods
Name | Description |
---|---|
finish
|
Returns the finished SHA hash. This also calls start to
reset the internal state.
|
put
|
Use this to feed the digest with data.
Also implements the isOutputRange
interface for ubyte and const(ubyte)[] .
|
start
|
SHA initialization. Begins an SHA1/SHA2 operation. |
Example
//Simple example, hashing a string using sha1Of helper function
ubyte[20] hash = sha1Of("abc");
//Let's get a hash string
writeln(toHexString(hash)); // "A9993E364706816ABA3E25717850C26C9CD0D89D"
//The same, but using SHA-224
ubyte[28] hash224 = sha224Of("abc");
writeln(toHexString(hash224)); // "23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7"
Example
//Using the basic API
SHA1 hash;
hash .start();
ubyte[1024] data;
//Initialize data here...
hash .put(data);
ubyte[20] result = hash .finish();
Example
//Let's use the template features:
//Note: When passing a SHA1 to a function, it must be passed by reference!
void doSomething(T)(ref T hash)
if (isDigest!T)
{
hash .put(cast(ubyte) 0);
}
SHA1 sha;
sha .start();
doSomething(sha);
writeln(toHexString(sha .finish())); // "5BA93C9DB0CFF93F52B521D7420E43F6EDA2784F"
Authors
The routines and algorithms are derived from the
Secure Hash Signature Standard (SHS) (FIPS PUB 180-2).
Kai Nacke, Johannes Pfau, Nick Sabalausky
License
Copyright © 1999-2018 by the D Language Foundation | Page generated by ddox.