cryptix.provider.md
Class MD5

java.lang.Object
  |
  +--java.security.MessageDigestSpi
        |
        +--java.security.MessageDigest
              |
              +--cryptix.provider.md.BlockMessageDigest
                    |
                    +--cryptix.provider.md.MD5
All Implemented Interfaces:
java.lang.Cloneable

public final class MD5
extends BlockMessageDigest
implements java.lang.Cloneable

This class implements the MD5 message digest algorithm.

BUG: The update method is missing.

References:

  1. Ronald L. Rivest, " The MD5 Message-Digest Algorithm", IETF RFC-1321 (informational).
  2. Bruce Schneier, "Section 18.5 MD5," Applied Cryptography, 2nd edition, John Wiley & Sons, 1996

Copyright © 1995-1997 Systemics Ltd on behalf of the Cryptix Development Team.
All rights reserved.

$Revision: 1.8 $

Since:
Cryptix 2.2
Author:
Systemics Ltd, David Hopwood

Inner classes inherited from class java.security.MessageDigest
java.security.MessageDigest.Delegate
 
Constructor Summary
MD5()
          The public constructor.
 
Method Summary
 java.lang.Object clone()
          Returns a copy of this MD object.
protected  byte[] engineDigest(byte[] in, int length)
          Returns the digest of the data added and resets the digest.
protected  int engineGetDataLength()
          Returns the length of the data (in bytes) hashed in every transform.
protected  int engineGetDigestLength()
          Returns the length of the hash (in bytes).
protected  void engineReset()
          Initializes (resets) the message digest.
protected  void engineTransform(byte[] in)
          Adds data to the message digest.
protected static int F(int x, int y, int z)
           
protected static int FF(int a, int b, int c, int d, int k, int s, int t)
           
protected static int G(int x, int y, int z)
           
protected static int GG(int a, int b, int c, int d, int k, int s, int t)
           
protected static int H(int x, int y, int z)
           
protected static int HH(int a, int b, int c, int d, int k, int s, int t)
           
protected static int I(int x, int y, int z)
           
protected static int II(int a, int b, int c, int d, int k, int s, int t)
           
static void main(java.lang.String[] argv)
          Entry point for self_test.
static void self_test()
          Do some basic tests.
protected  void transform(int[] M)
           
 
Methods inherited from class cryptix.provider.md.BlockMessageDigest
bitcount, engineDigest, engineUpdate, engineUpdate
 
Methods inherited from class java.security.MessageDigest
digest, digest, digest, getAlgorithm, getDigestLength, getInstance, getInstance, getProvider, isEqual, reset, toString, update, update, update
 
Methods inherited from class java.security.MessageDigestSpi
engineDigest
 
Methods inherited from class java.lang.Object
, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MD5

public MD5()
The public constructor.
Method Detail

engineGetDigestLength

protected int engineGetDigestLength()
Returns the length of the hash (in bytes).
Overrides:
engineGetDigestLength in class java.security.MessageDigestSpi

engineGetDataLength

protected int engineGetDataLength()
Returns the length of the data (in bytes) hashed in every transform.
Overrides:
engineGetDataLength in class BlockMessageDigest

clone

public java.lang.Object clone()
Returns a copy of this MD object.
Overrides:
clone in class java.security.MessageDigest

engineReset

protected void engineReset()
Initializes (resets) the message digest.
Overrides:
engineReset in class BlockMessageDigest

engineTransform

protected void engineTransform(byte[] in)
Adds data to the message digest.
Overrides:
engineTransform in class BlockMessageDigest
Parameters:
data - The data to be added.
offset - The start of the data in the array.
length - The amount of data to add.

engineDigest

protected byte[] engineDigest(byte[] in,
                              int length)
Returns the digest of the data added and resets the digest.
Overrides:
engineDigest in class BlockMessageDigest
Returns:
the digest of all the data added to the message digest as a byte array.

F

protected static int F(int x,
                       int y,
                       int z)

G

protected static int G(int x,
                       int y,
                       int z)

H

protected static int H(int x,
                       int y,
                       int z)

I

protected static int I(int x,
                       int y,
                       int z)

FF

protected static int FF(int a,
                        int b,
                        int c,
                        int d,
                        int k,
                        int s,
                        int t)

GG

protected static int GG(int a,
                        int b,
                        int c,
                        int d,
                        int k,
                        int s,
                        int t)

HH

protected static int HH(int a,
                        int b,
                        int c,
                        int d,
                        int k,
                        int s,
                        int t)

II

protected static int II(int a,
                        int b,
                        int c,
                        int d,
                        int k,
                        int s,
                        int t)

transform

protected void transform(int[] M)

main

public static final void main(java.lang.String[] argv)
Entry point for self_test.

self_test

public static final void self_test()
                            throws java.lang.Exception
Do some basic tests. Three of the validation data are included only, no output, success or exception. If you want more, write a test program!
See Also:
cryptix.examples.UnitMD5