public class Md2 extends AbstractMessageDigest
by Ron Rivest's MD2 algorithm is described by Burt Kaliski in RFC 1319 (and previously in RFC 1115). It is a secure hash function that takes input of arbitrary length and produces an output of exactly 16 bytes (128 bit).
It is designed for 8 bit machines and therefore does not deliver optimum performance on todays processors with a wordsize of 32 and more bits. Additionally, some weaknesses have been found in the compression function employed by MD2, although the algorithm can still be considered secure because of a checksum that is appended to the data. Nevertheless we recommend using stronger hash algorithms. Basically MD2 is implemented only to allow certain certificates from RSA Inc. and Verisign to be verified.
An excerpt from the original RFC1319 follows:
This document describes the MD2 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. It is conjectured that it is computationally infeasible to produce two messages having the same message digest, or to produce any message having a given pre-specified target message digest. The MD2 algorithm is intended for digital signature applications, where a large file must be "compressed" in a secure manner before being signed with a private (secret) key under a public-key cryptosystem such as RSA.
This class extends the java.security.MessageDigest
class and
applications should use one of the getInstance
methods presented
there to create a MessageDigest-MD2 object. Generally, an application wishing
to compute the message digest of some data has to perform three steps:
getInstance
method, e.g.:
MessageDigest md2 = MessageDigest.getInstance("MD2");
update
methods,
e.g: md2.update(m1); md2.update(m2); ...
digest
methods: byte[] hash_value = md2.digest();
There are several ways for combining update
and
digest
methods for computing a message digest. Since this class
implements the Cloneable
interface, MD2 MessageDigest objects
may be used for compute intermediate hashes through cloning (see
http
://java.sun.com/products/JDK/1.1/docs/guide/security/CryptoSpec.html).
When the hash value successfully has been computed, the MD2 MessageDigest object automatically resets for being able to be supplied with new data to be hashed.
The MD2 algorithm may be combined with a public-key algorithm (e.g. RSA) to be used as digital signature algorithm (see iaik.security.rsa.Md2RSASignature).
Constructor and Description |
---|
Md2()
Creates a new MD2 message digest object.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
clone()
Returns a clone of this Md2 Object.
|
void |
destroyCriticalData() |
void |
engineReset()
SPI: Resets this MD2 message digest object for being supplied with
new data.
|
protected void |
finalize() |
engineDigest, engineDigest, engineGetDigestLength, engineUpdate, engineUpdate
public Md2()
Applications do not use this constructor. They shall use
for creating a messageDigest object.MessageDigest.getInstance("MD2");
MessageDigest.getInstance(java.lang.String)
public java.lang.Object clone()
clone
in class AbstractMessageDigest
public void engineReset()
This method is called by engineDigest
after the
actual hash computation has been finished to automatically reset the
message digest object for being supplied with new data for starting a new
hash computation.
engineReset
in class AbstractMessageDigest
MessageDigestSpi.engineReset()
public void destroyCriticalData()
protected void finalize()
finalize
in class java.lang.Object