PublicShow sourcesha.pl -- SHA secure hashes

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).
Source 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
Source 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.
Source 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.

Source hmac_sha(+Key, +Data, -Hash, +Options) is det
For Options, see sha_hash/3.
Source 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.
Source 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'.