com.Ostermiller.util
Class MD5InputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.FilterInputStream
          extended by com.Ostermiller.util.MD5InputStream
All Implemented Interfaces:
java.io.Closeable

public class MD5InputStream
extends java.io.FilterInputStream

Implements MD5 functionality on a stream. More information about this class is available from ostermiller.org.

This class produces a 128-bit "fingerprint" or "message digest" for all data read from this stream. 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 MD5 algorithm is intended for digital signature applications, where a large file must be "compressed" in a secure manner before being encrypted with a private (secret) key under a public-key cryptosystem such as RSA.

For more information see RFC1321.

Since:
ostermillerutils 1.00.00
Author:
Santeri Paavolainen http://www.helsinki.fi/~sjpaavol/programs/md5/, Stephen Ostermiller http://ostermiller.org/contact.pl?regarding=Java+Utilities
See Also:
MD5, MD5OutputStream

Field Summary
 
Fields inherited from class java.io.FilterInputStream
in
 
Constructor Summary
MD5InputStream(java.io.InputStream in)
          Creates a MD5InputStream
 
Method Summary
 byte[] getHash()
          Returns array of bytes representing hash of the stream so far.
 java.lang.String getHashString()
          Get a 32-character hex representation representing hash of the stream so far.
 int read()
          Reads the next byte of data from this input stream.
 int read(byte[] bytes, int offset, int length)
          Reads up to len bytes of data from this input stream into an array of bytes.
 
Methods inherited from class java.io.FilterInputStream
available, close, mark, markSupported, read, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MD5InputStream

public MD5InputStream(java.io.InputStream in)
Creates a MD5InputStream

Parameters:
in - the underlying input stream
Method Detail

read

public int read()
         throws java.io.IOException
Reads the next byte of data from this input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

This method simply performs in.read() and returns the result.

Overrides:
read in class java.io.FilterInputStream
Returns:
the next byte of data, or -1 if the end of the stream is reached.
Throws:
java.io.IOException - if an I/O error occurs.
Since:
ostermillerutils 1.00.00

read

public int read(byte[] bytes,
                int offset,
                int length)
         throws java.io.IOException
Reads up to len bytes of data from this input stream into an array of bytes. This method blocks until some input is available.

Overrides:
read in class java.io.FilterInputStream
Parameters:
bytes - the buffer into which the data is read.
offset - the start offset of the data.
length - the maximum number of bytes read.
Throws:
java.io.IOException - if an I/O error occurs.
Since:
ostermillerutils 1.00.00

getHash

public byte[] getHash()
Returns array of bytes representing hash of the stream so far.

Returns:
Array of 16 bytes, the hash of all read bytes.
Since:
ostermillerutils 1.00.00

getHashString

public java.lang.String getHashString()
Get a 32-character hex representation representing hash of the stream so far.

Returns:
A string containing the hash of all written bytes.
Since:
ostermillerutils 1.00.00


Copyright © 2003 MBARI.

The Monterey Bay Aquarium Research Institute (MBARI) provides this documentation and code "as is", with no warranty, express or implied, of its quality or consistency. It is provided without support and without obligation on the part of MBARI to assist in its use, correction, modification, or enhancement.