Android APIs
public abstract class

MessageDigest

extends MessageDigestSpi
java.lang.Object
   ↳ java.security.MessageDigestSpi
     ↳ java.security.MessageDigest

Class Overview

Uses a one-way hash function to turn an arbitrary number of bytes into a fixed-length byte sequence. The original arbitrary-length sequence is the message, and the fixed-length byte sequence is the digest or message digest.

Sample Code

The basic pattern to digest an InputStream looks like this:

  MessageDigest digester = MessageDigest.getInstance("MD5");
  byte[] bytes = new byte[8192];
  int byteCount;
  while ((byteCount = in.read(bytes)) > 0) {
    digester.update(bytes, 0, byteCount);
  }
  byte[] digest = digester.digest();
 

That is, after creating or resetting a MessageDigest you should call update(byte[], int, int) for each block of input data, and then call digest() to get the final digest. Note that calling digest resets the MessageDigest. Advanced users who want partial digests should clone their MessageDigest before calling digest.

This class is not thread-safe.

See also:

Summary

Protected Constructors
MessageDigest(String algorithm)
Constructs a new instance of MessageDigest with the name of the algorithm to use.
Public Methods
int digest(byte[] buf, int offset, int len)
Computes and stores the final hash value for this MessageDigest.
byte[] digest()
Computes and returns the final hash value for this MessageDigest.
byte[] digest(byte[] input)
Performs the final update and then computes and returns the final hash value for this MessageDigest.
final String getAlgorithm()
Returns the name of the algorithm of this MessageDigest.
final int getDigestLength()
Returns the engine digest length in bytes.
static MessageDigest getInstance(String algorithm, String provider)
Returns a new instance of MessageDigest that utilizes the specified algorithm from the specified provider.
static MessageDigest getInstance(String algorithm, Provider provider)
Returns a new instance of MessageDigest that utilizes the specified algorithm from the specified provider.
static MessageDigest getInstance(String algorithm)
Returns a new instance of MessageDigest that utilizes the specified algorithm.
final Provider getProvider()
Returns the provider associated with this MessageDigest.
static boolean isEqual(byte[] digesta, byte[] digestb)
Indicates whether to digest are equal by performing a simply byte-per-byte compare of the two digests.
void reset()
Puts this MessageDigest back in an initial state, such that it is ready to compute a one way hash value.
String toString()
Returns a string containing a concise, human-readable description of this MessageDigest including the name of its algorithm.
final void update(ByteBuffer input)
Updates this MessageDigest using the given input.
void update(byte[] input, int offset, int len)
Updates this MessageDigest using the given byte[].
void update(byte arg0)
Updates this MessageDigest using the given byte.
void update(byte[] input)
Updates this MessageDigest using the given byte[].
[Expand]
Inherited Methods
From class java.security.MessageDigestSpi
From class java.lang.Object

Protected Constructors

protected MessageDigest (String algorithm)

Added in API level 1

Constructs a new instance of MessageDigest with the name of the algorithm to use.

Parameters
algorithm String: the name of algorithm to use

Public Methods

public int digest (byte[] buf, int offset, int len)

Added in API level 1

Computes and stores the final hash value for this MessageDigest. After the digest is computed the receiver is reset.

Parameters
buf byte: the buffer to store the result
offset int: the index of the first byte in buf to store
len int: the number of bytes allocated for the digest
Returns
int the number of bytes written to buf
Throws
DigestException if an error occurs
IllegalArgumentException if offset or len are not valid in respect to buf

See also:

public byte[] digest ()

Added in API level 1

Computes and returns the final hash value for this MessageDigest. After the digest is computed the receiver is reset.

Returns
byte[] the computed one way hash value

See also:

public byte[] digest (byte[] input)

Added in API level 1

Performs the final update and then computes and returns the final hash value for this MessageDigest. After the digest is computed the receiver is reset.

Parameters
input byte: the byte array
Returns
byte[] the computed one way hash value

See also:

public final String getAlgorithm ()

Added in API level 1

Returns the name of the algorithm of this MessageDigest.

Returns
String the name of the algorithm of this MessageDigest

public final int getDigestLength ()

Added in API level 1

Returns the engine digest length in bytes. If the implementation does not implement this function or is not an instance of Cloneable, 0 is returned.

Returns
int the digest length in bytes, or 0

public static MessageDigest getInstance (String algorithm, String provider)

Added in API level 1

Returns a new instance of MessageDigest that utilizes the specified algorithm from the specified provider.

Parameters
algorithm String: the name of the algorithm to use
provider String: the name of the provider
Returns
MessageDigest a new instance of MessageDigest that utilizes the specified algorithm from the specified provider
Throws
NoSuchAlgorithmException if the specified algorithm is not available
NoSuchProviderException if the specified provider is not available
NullPointerException if algorithm is null
IllegalArgumentException if provider == null || provider.isEmpty()

public static MessageDigest getInstance (String algorithm, Provider provider)

Added in API level 1

Returns a new instance of MessageDigest that utilizes the specified algorithm from the specified provider. The provider supplied does not have to be registered.

Parameters
algorithm String: the name of the algorithm to use
provider Provider: the provider
Returns
MessageDigest a new instance of MessageDigest that utilizes the specified algorithm from the specified provider
Throws
NoSuchAlgorithmException if the specified algorithm is not available
NullPointerException if algorithm is null
IllegalArgumentException if provider == null

public static MessageDigest getInstance (String algorithm)

Added in API level 1

Returns a new instance of MessageDigest that utilizes the specified algorithm.

Parameters
algorithm String: the name of the algorithm to use
Returns
MessageDigest a new instance of MessageDigest that utilizes the specified algorithm
Throws
NoSuchAlgorithmException if the specified algorithm is not available
NullPointerException if algorithm is null

public final Provider getProvider ()

Added in API level 1

Returns the provider associated with this MessageDigest.

Returns
Provider the provider associated with this MessageDigest

public static boolean isEqual (byte[] digesta, byte[] digestb)

Added in API level 1

Indicates whether to digest are equal by performing a simply byte-per-byte compare of the two digests.

Parameters
digesta byte: the first digest to be compared
digestb byte: the second digest to be compared
Returns
boolean true if the two hashes are equal, false otherwise

public void reset ()

Added in API level 1

Puts this MessageDigest back in an initial state, such that it is ready to compute a one way hash value.

public String toString ()

Added in API level 1

Returns a string containing a concise, human-readable description of this MessageDigest including the name of its algorithm.

Returns
String a printable representation for this MessageDigest

public final void update (ByteBuffer input)

Added in API level 1

Updates this MessageDigest using the given input.

Parameters
input ByteBuffer: the ByteBuffer

public void update (byte[] input, int offset, int len)

Added in API level 1

Updates this MessageDigest using the given byte[].

Parameters
input byte: the byte array
offset int: the index of the first byte in input to update from
len int: the number of bytes in input to update from
Throws
IllegalArgumentException if offset or len are not valid in respect to input

public void update (byte arg0)

Added in API level 1

Updates this MessageDigest using the given byte.

Parameters
arg0 byte: the byte to update this MessageDigest with

See also:

public void update (byte[] input)

Added in API level 1

Updates this MessageDigest using the given byte[].

Parameters
input byte: the byte array
Throws
NullPointerException if input is null