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 ( );
}
DigestInputStream.{DigestInputStream( ),
setMessageDigest( )},
DigestOutputStream.{DigestOutputStream( ),
setMessageDigest( )}