Java in a Nutshell, 5th Edition [Electronic resources]

نسخه متنی -صفحه : 1191/ 530
نمايش فراداده

MessageDigestjava.security

Java 1.1

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 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 ( ); }

Passed To

DigestInputStream.{DigestInputStream( ), setMessageDigest( )}, DigestOutputStream.{DigestOutputStream( ), setMessageDigest( )}

Returned By

DigestInputStream.getMessageDigest( ), DigestOutputStream.getMessageDigest( )

Type Of

DigestInputStream.digest, DigestOutputStream.digest