The hash-algorithms Library¶
The hash-algorithms library provides consistent access to a variety of hash algorithms:
md5
sha1
sha224
sha256
sha384
sha512
Hashing an entire string at once can be done via the functions named after each hash:
let digest = sha1("Some text");
If you want a printable digest, use hexdigest(<byte-vector>)
:
let hexdigest = hexdigest(sha1("Some text"));
If you want to hash multiple strings into a single digest (useful when streaming),
you can use the update-hash
and digest
functions:
let hash = make(<sha1>);
update-hash(hash, "Some");
update-hash(hash, " ");
update-hash(hash, "text");
let digest = digest(hash);
// hexdigest works on hashes as well:
let hexdigest = hexdigest(hash);
The hash-algorithms Module¶
-
digest-size
Generic function¶ Returns the digest size of the hash algorithm.
-
block-size
Generic function¶ Returns the block size of the hash algorithm.
-
update-hash
Generic function¶ Add more data to the hash.
- Signature
update-hash (hash, input) => ()
- Parameters
hash – An instance of
<hash>
.input – An instance of
<byte-string>
,<buffer>
or<byte-vector>
.
- Discussion
Add more data to the hash. This is useful when streaming data or the data is available in multiple strings and you wish to avoid the overhead of concatenation.
Calling
update-hash
multiple times is equivalent to calling it once with a concatenation of the arguments:let hash-separate = make(<sha1>); update-hash(hash-separate, "Some"); update-hash(hash-separate, " "); update-hash(hash-separate, "text"); let digest-separate = digest(hash-separate); let hash-combined = make(<sha1>); update-hash(hash-combined, "Some text"); let digest-combined = digest(hash-combined); // digest-separate and digest-combined will be the same
- See also
-
digest
Generic function¶ - Signature
digest (hash) => (digest)
- Parameters
hash – An instance of
<hash>
.
- Values
digest – An instance of
<byte-vector>
.
- Discussion
The return value digest is binary data and may include null bytes. To display this result in text form, use
hexdigest(<hash>)
orhexdigest(<byte-vector>)
.Use
update-hash
to add data to the hash.- See also
-
hexdigest(<hash>)
Method¶ Returns the digest for the given hash as a hexadecimal string.
- Signature
hexdigest (hash) => (hexdigest)
- Parameters
hash – An instance of
<hash>
.
- Values
hexdigest – An instance of
<byte-string>
.
- See also
-
hexdigest(<byte-vector>)
Method¶ Returns the digest given as a hexadecimal string.
- Signature
hexdigest (digest) => (hexdigest)
- Parameters
digest – An instance of
<byte-vector>
.
- Values
hexdigest – An instance of
<byte-string>
.
- See also
MD5¶
-
md5
Function¶ - Signature
md5 (input) => (digest)
- Parameters
input – An instance of
<byte-string>
,<buffer>
or<byte-vector>
.
- Values
digest – An instance of
<byte-vector>
.
SHA-1¶
-
sha1
Function¶ - Signature
sha1 (input) => (digest)
- Parameters
input – An instance of
<byte-string>
,<buffer>
or<byte-vector>
.
- Values
digest – An instance of
<byte-vector>
.
SHA-2¶
-
sha256
Function¶ - Signature
sha256 (input) => (digest)
- Parameters
input – An instance of
<byte-string>
,<buffer>
or<byte-vector>
.
- Values
digest – An instance of
<byte-vector>
.
-
sha224
Function¶ - Signature
sha224 (input) => (digest)
- Parameters
input – An instance of
<byte-string>
,<buffer>
or<byte-vector>
.
- Values
digest – An instance of
<byte-vector>
.
-
sha384
Function¶ - Signature
sha384 (input) => (digest)
- Parameters
input – An instance of
<byte-string>
,<buffer>
or<byte-vector>
.
- Values
digest – An instance of
<byte-vector>
.
-
sha512
Function¶ - Signature
sha512 (input) => (digest)
- Parameters
input – An instance of
<byte-string>
,<buffer>
or<byte-vector>
.
- Values
digest – An instance of
<byte-vector>
.