This MessageDigest class provides the functionality of a message digest
algorithm, such as MD5 or SHA. Message digests are secure one-way
hash functions that take arbitrary-sized data and output a
fixed-length hash value.
Like other algorithm-based classes in Java Security,
MessageDigest has two major components:
Message Digest API (Application Program Interface)
This is the interface of methods called by applications needing
message digest services. The API consists of all public methods.
Message Digest SPI (Service Provider Interface)
This is the interface implemented by providers that supply
specific algorithms. It consists of all methods whose names
are prefixed by engine. Each such method is called by
a correspondingly-named public API method. For example,
the engineReset method is
called by the reset method.
The SPI methods are abstract; providers must supply a
concrete implementation.
A MessageDigest object starts out initialized. The data is
processed through it using the update
methods. At any point reset can be called
to reset the digest. Once all the data to be updated has been
updated, one of the digest methods should
be called to complete the hash computation.
The digest method can be called once for a given number
of updates. After digest has been called, the MessageDigest
object is reset to its initialized state.
Implementations are free to implement the Cloneable interface,
and doing so will let client applications test cloneability
using instanceof Cloneable before cloning:
MessageDigest md = MessageDigest.getInstance("SHA");
if (md instanceof Cloneable) {
md.update(toChapter1);
MessageDigest tc1 = md.clone();
byte[] toChapter1Digest = tc1.digest;
md.update(toChapter2);
...etc.
} else {
throw new DigestException("couldn't make digest of partial content");
}
Note that if a given implementation is not cloneable, it is
still possible to compute intermediate digests by instantiating
several instances, if the number of digests is known in advance.
Generates a MessageDigest object implementing the specified
algorithm, as supplied from the specified provider, if such an
algorithm is available from the provider.
Generates a MessageDigest object that implements the specified digest
algorithm. If the default provider package contains a MessageDigest
subclass implementing the algorithm, an instance of that subclass
is returned. If the algorithm is not available in the default
package, other packages are searched.
Generates a MessageDigest object implementing the specified
algorithm, as supplied from the specified provider, if such an
algorithm is available from the provider.
Performs a final update on the digest using the specified array
of bytes, then completes the digest computation. That is, this
method first calls update on the
array, then calls digest().
Parameters:
input - the input to be updated before the digest is
completed.
Returns a string that identifies the algorithm, independent of
implementation details. The name should be a standard
Java Security name (such as "SHA", "MD5", and so on).
See Appendix A in the
Java Cryptography Architecture API Specification & Reference
for information about standard algorithm names.
SPI: Completes the hash computation by performing final
operations such as padding. Once engineDigest has
been called, the engine should be reset (see reset). Resetting is the responsibility of the
engine implementor.