This library provides a lightweight implementation for computing SHA
secure hashes. A general secure hash interface is provided by
library(crypto), part of the ssl
package.
- See also
- - library(md5), library(hash_stream) and library(crypto).
- sha_hash(+Data, -Hash, +Options) is det
- Hash is the SHA hash of Data, The conversion is controlled
by Options:
- algorithm(+Algorithm)
- One of
sha1
(default), sha224
, sha256
, sha384
or
sha512
- encoding(+Encoding)
- If Data is a sequence of character codes, this must be
translated into a sequence of bytes, because that is what
the hashing requires. The default encoding is
utf8
. The
other meaningful value is octet
, claiming that Data contains
raw bytes.
- Arguments:
-
Data | - is either an atom, string or code-list |
Hash | - is a packed string |
- sha_new_ctx(-NewContext, +Options) is det
- NewContext is unified with the empty SHA computation context
(which includes the Options.) It could later be passed to
sha_hash_ctx/4. For Options, see sha_hash/3.
- Arguments:
-
NewContext | - is an opaque pure Prolog term that is
subject to garbage collection. |
- sha_hash_ctx(+OldContext, +Data, -NewContext, -Hash) is det
- Hash is the SHA hash of Data. NewContext is the new SHA
computation context, while OldContext is the old. OldContext
may be produced by a prior invocation of either sha_new_ctx/3 or
sha_hash_ctx/4 itself.
This predicate allows a SHA function to be computed in chunks,
which may be important while working with Metalink (RFC 5854),
BitTorrent or similar technologies, or simply with big files.
- hmac_sha(+Key, +Data, -Hash, +Options) is det
- For Options, see sha_hash/3.
- file_sha1(+File, -SHA1:atom) is det
- True when SHA1 is the SHA1 hash for the content of File. Options
is passed to open/4 and typically used to control whether binary
or text encoding must be used. The output is compatible to the
sha1sum
program found in many systems.
- hash_atom(+HashCodes, -HexAtom) is det
- Convert a list of bytes (integers 0..255) into the usual
hexadecimal notation. E.g.
?- sha_hash('SWI-Prolog', Hash, []),
hash_atom(Hash, Hex).
Hash = [61, 128, 252, 38, 121, 69, 229, 85, 199|...],
Hex = '3d80fc267945e555c730403bd0ab0716e2a68c68'.