Name

MessageDigest

Synopsis

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.

Figure 14-24. java.security.MessageDigest

public ...

Get Java in a Nutshell, 5th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.