org.bouncycastle.crypto.digests
Class MD4Digest

java.lang.Object
  extended by org.bouncycastle.crypto.digests.GeneralDigest
      extended by org.bouncycastle.crypto.digests.MD4Digest
All Implemented Interfaces:
Digest, ExtendedDigest

public class MD4Digest
extends GeneralDigest

implementation of MD4 as RFC 1320 by R. Rivest, MIT Laboratory for Computer Science and RSA Data Security, Inc.

NOTE: This algorithm is only included for backwards compatability with legacy applications, it's not secure, don't use it for anything new!


Field Summary
private static int DIGEST_LENGTH
           
private  int H1
           
private  int H2
           
private  int H3
           
private  int H4
           
private static int S11
           
private static int S12
           
private static int S13
           
private static int S14
           
private static int S21
           
private static int S22
           
private static int S23
           
private static int S24
           
private static int S31
           
private static int S32
           
private static int S33
           
private static int S34
           
private  int[] X
           
private  int xOff
           
 
Constructor Summary
MD4Digest()
          Standard constructor
MD4Digest(MD4Digest t)
          Copy constructor.
 
Method Summary
 int doFinal(byte[] out, int outOff)
          close the digest, producing the final digest value.
private  int F(int u, int v, int w)
           
private  int G(int u, int v, int w)
           
 java.lang.String getAlgorithmName()
          return the algorithm name
 int getDigestSize()
          return the size, in bytes, of the digest produced by this message digest.
private  int H(int u, int v, int w)
           
protected  void processBlock()
           
protected  void processLength(long bitLength)
           
protected  void processWord(byte[] in, int inOff)
           
 void reset()
          reset the chaining variables to the IV values.
private  int rotateLeft(int x, int n)
           
private  void unpackWord(int word, byte[] out, int outOff)
           
 
Methods inherited from class org.bouncycastle.crypto.digests.GeneralDigest
finish, getByteLength, update, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DIGEST_LENGTH

private static final int DIGEST_LENGTH
See Also:
Constant Field Values

H1

private int H1

H2

private int H2

H3

private int H3

H4

private int H4

X

private int[] X

xOff

private int xOff

S11

private static final int S11
See Also:
Constant Field Values

S12

private static final int S12
See Also:
Constant Field Values

S13

private static final int S13
See Also:
Constant Field Values

S14

private static final int S14
See Also:
Constant Field Values

S21

private static final int S21
See Also:
Constant Field Values

S22

private static final int S22
See Also:
Constant Field Values

S23

private static final int S23
See Also:
Constant Field Values

S24

private static final int S24
See Also:
Constant Field Values

S31

private static final int S31
See Also:
Constant Field Values

S32

private static final int S32
See Also:
Constant Field Values

S33

private static final int S33
See Also:
Constant Field Values

S34

private static final int S34
See Also:
Constant Field Values
Constructor Detail

MD4Digest

public MD4Digest()
Standard constructor


MD4Digest

public MD4Digest(MD4Digest t)
Copy constructor. This will copy the state of the provided message digest.

Method Detail

getAlgorithmName

public java.lang.String getAlgorithmName()
Description copied from interface: Digest
return the algorithm name

Returns:
the algorithm name

getDigestSize

public int getDigestSize()
Description copied from interface: Digest
return the size, in bytes, of the digest produced by this message digest.

Returns:
the size, in bytes, of the digest produced by this message digest.

processWord

protected void processWord(byte[] in,
                           int inOff)
Specified by:
processWord in class GeneralDigest

processLength

protected void processLength(long bitLength)
Specified by:
processLength in class GeneralDigest

unpackWord

private void unpackWord(int word,
                        byte[] out,
                        int outOff)

doFinal

public int doFinal(byte[] out,
                   int outOff)
Description copied from interface: Digest
close the digest, producing the final digest value. The doFinal call leaves the digest reset.

Parameters:
out - the array the digest is to be copied into.
outOff - the offset into the out array the digest is to start at.

reset

public void reset()
reset the chaining variables to the IV values.

Specified by:
reset in interface Digest
Overrides:
reset in class GeneralDigest

rotateLeft

private int rotateLeft(int x,
                       int n)

F

private int F(int u,
              int v,
              int w)

G

private int G(int u,
              int v,
              int w)

H

private int H(int u,
              int v,
              int w)

processBlock

protected void processBlock()
Specified by:
processBlock in class GeneralDigest