Package Hash
Hashing algorithms
Hash functions take arbitrary binary strings as input, and produce a random-like output
of fixed size that is dependent on the input; it should be practically infeasible
to derive the original input data given only the hash function's
output. In other words, the hash function is one-way.
It should also not be practically feasible to find a second piece of data
(a second pre-image) whose hash is the same as the original message
(weak collision resistance).
Finally, it should not be feasible to find two arbitrary messages with the
same hash (strong collision resistance).
The output of the hash function is called the digest of the input message.
In general, the security of a hash function is related to the length of the
digest. If the digest is n bits long, its security level is roughly comparable
to the the one offered by an n/2 bit encryption algorithm.
Hash functions can be used simply as a integrity check, or, in
association with a public-key algorithm, can be used to implement
digital signatures.