This class computes a message digest (also
known as a cryptographic checksum) for an arbitrary
sequence of bytes. Obtain a MessageDigest object
by calling one of the static getInstance(
)
factory methods and specifying the desired algorithm (e.g., SHA or
MD5) and, optionally, the desired provider. Next, specify the data to
be digested by calling any of the update( )
methods one or more times. Prior to Java 5.0, you must pass a
byte[ ] to update( ). In Java
5.0 and later, however, you can also use a
java.nio.ByteBuffer. This facilitates the
computation of message digests when using the New I/O API.
After you pass data to update( ), call
digest( ),
which computes the message digest and returns it as an array of
bytes. If you have only one array of bytes to be digested, you can
pass it directly to digest( ) and skip the
update( ) step. When you call digest(
), the MessageDigest( ) object is reset
and is then ready to compute a new digest. You can also explicitly
reset a MessageDigest without computing the digest
by calling reset( ). To compute
a digest for part of a message without resetting the
MessageDigest, clone the
MessageDigest and call digest(
) on the cloned copy. Note that not all implementations are
cloneable, so the clone( ) method may throw an
exception.
The MessageDigest class is often used in
conjunction with DigestInputStream and
DigestOutputStream, which automate the
update( ) calls for you.

public abstract class MessageDigest extends MessageDigestSpi {
// Protected Constructors
protected MessageDigest(String algorithm);
// Public Class Methods
public static MessageDigest getInstance(String algorithm)
throws NoSuchAlgorithmException;
public static MessageDigest getInstance(String algorithm,
String provider)
throws NoSuchAlgorithmException, NoSuchProviderException;
1.4 public static MessageDigest getInstance(String algorithm, Provider provider)
throws NoSuchAlgorithmException;
public static boolean isEqual(byte[ ] digesta, byte[ ] digestb);
// Public Instance Methods
public byte[ ] digest( );
public byte[ ] digest(byte[ ] input);
1.2 public int digest(byte[ ] buf, int offset, int len)
throws DigestException;
public final String getAlgorithm( );
1.2 public final int getDigestLength( );
1.2 public final Provider getProvider( );
public void reset( );
public void update(byte input);
public void update(byte[ ] input);
5.0 public final void update(java.nio.ByteBuffer input);
public void update(byte[ ] input, int offset, int len);
// Public Methods Overriding MessageDigestSpi
public Object clone( ) throws CloneNotSupportedException;
// Public Methods Overriding Object
public String toString( );
}