Class MD5

java.lang.Object
com.Ostermiller.util.MD5

public class MD5 extends Object
MD5 hash generator. More information about this class is available from ostermiller.org.

This class 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 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://santtu.iki.fi/programs/md5/, Stephen Ostermiller https://ostermiller.org/contact.pl?regarding=Java+Utilities
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    MD5()
    Class constructor
  • Method Summary

    Modifier and Type
    Method
    Description
    byte[]
    Gets this hash sum as an array of 16 bytes.
    static byte[]
    getHash(byte[] b)
    Gets the MD5 hash of the given byte array.
    static byte[]
    Gets the MD5 hash of the given file.
    static byte[]
    Gets the MD5 hash the data on the given InputStream.
    static byte[]
    Gets the MD5 hash of the given String.
    static byte[]
    Gets the MD5 hash of the given String.
    Returns 32-character hex representation of this hash.
    static String
    getHashString(byte[] b)
    Gets the MD5 hash of the given byte array.
    static String
    Gets the MD5 hash of the given file.
    static String
    Gets the MD5 hash the data on the given InputStream.
    static String
    Gets the MD5 hash of the given String.
    static String
    Gets the MD5 hash of the given String.
    static void
    main(String[] args)
    Command line program that will take files as arguments and output the MD5 sum for each file.
    void
    Reset the MD5 sum to its initial state.
    Returns 32-character hex representation of this hash.
    void
    update(byte b)
    Updates this hash with a single byte.
    void
    update(byte[] buffer)
    Update this hash with the given data.
    void
    update(byte[] buffer, int length)
    Update this hash with the given data.
    void
    update(byte[] buffer, int offset, int length)
    Update this hash with the given data.
    void
    Update this hash with a String.
    void
    update(String s, String enc)
    Update this hash with a String.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • MD5

      public MD5()
      Class constructor
      Since:
      ostermillerutils 1.00.00
  • Method Details

    • main

      public static void main(String[] args)
      Command line program that will take files as arguments and output the MD5 sum for each file.
      Parameters:
      args - command line arguments
      Since:
      ostermillerutils 1.00.00
    • getHash

      public byte[] getHash()
      Gets this hash sum as an array of 16 bytes.
      Returns:
      Array of 16 bytes, the hash of all updated bytes.
      Since:
      ostermillerutils 1.00.00
    • getHashString

      public String getHashString()
      Returns 32-character hex representation of this hash.
      Returns:
      String representation of this object's hash.
      Since:
      ostermillerutils 1.00.00
    • getHash

      public static byte[] getHash(byte[] b)
      Gets the MD5 hash of the given byte array.
      Parameters:
      b - byte array for which an MD5 hash is desired.
      Returns:
      Array of 16 bytes, the hash of all updated bytes.
      Since:
      ostermillerutils 1.00.00
    • getHashString

      public static String getHashString(byte[] b)
      Gets the MD5 hash of the given byte array.
      Parameters:
      b - byte array for which an MD5 hash is desired.
      Returns:
      32-character hex representation the data's MD5 hash.
      Since:
      ostermillerutils 1.00.00
    • getHash

      public static byte[] getHash(InputStream in) throws IOException
      Gets the MD5 hash the data on the given InputStream.
      Parameters:
      in - byte array for which an MD5 hash is desired.
      Returns:
      Array of 16 bytes, the hash of all updated bytes.
      Throws:
      IOException - if an I/O error occurs.
      Since:
      ostermillerutils 1.00.00
    • getHashString

      public static String getHashString(InputStream in) throws IOException
      Gets the MD5 hash the data on the given InputStream.
      Parameters:
      in - byte array for which an MD5 hash is desired.
      Returns:
      32-character hex representation the data's MD5 hash.
      Throws:
      IOException - if an I/O error occurs.
      Since:
      ostermillerutils 1.00.00
    • getHash

      public static byte[] getHash(File f) throws IOException
      Gets the MD5 hash of the given file.
      Parameters:
      f - file for which an MD5 hash is desired.
      Returns:
      Array of 16 bytes, the hash of all updated bytes.
      Throws:
      IOException - if an I/O error occurs.
      Since:
      ostermillerutils 1.00.00
    • getHashString

      public static String getHashString(File f) throws IOException
      Gets the MD5 hash of the given file.
      Parameters:
      f - file array for which an MD5 hash is desired.
      Returns:
      32-character hex representation the data's MD5 hash.
      Throws:
      IOException - if an I/O error occurs.
      Since:
      ostermillerutils 1.00.00
    • getHash

      public static byte[] getHash(String s)
      Gets the MD5 hash of the given String. The string is converted to bytes using the current platform's default character encoding.
      Parameters:
      s - String for which an MD5 hash is desired.
      Returns:
      Array of 16 bytes, the hash of all updated bytes.
      Since:
      ostermillerutils 1.00.00
    • getHashString

      public static String getHashString(String s)
      Gets the MD5 hash of the given String. The string is converted to bytes using the current platform's default character encoding.
      Parameters:
      s - String for which an MD5 hash is desired.
      Returns:
      32-character hex representation the data's MD5 hash.
      Since:
      ostermillerutils 1.00.00
    • getHash

      public static byte[] getHash(String s, String enc) throws UnsupportedEncodingException
      Gets the MD5 hash of the given String.
      Parameters:
      s - String for which an MD5 hash is desired.
      enc - The name of a supported character encoding.
      Returns:
      Array of 16 bytes, the hash of all updated bytes.
      Throws:
      UnsupportedEncodingException - If the named encoding is not supported.
      Since:
      ostermillerutils 1.00.00
    • getHashString

      public static String getHashString(String s, String enc) throws UnsupportedEncodingException
      Gets the MD5 hash of the given String.
      Parameters:
      s - String for which an MD5 hash is desired.
      enc - The name of a supported character encoding.
      Returns:
      32-character hex representation the data's MD5 hash.
      Throws:
      UnsupportedEncodingException - If the named encoding is not supported.
      Since:
      ostermillerutils 1.00.00
    • reset

      public void reset()
      Reset the MD5 sum to its initial state.
      Since:
      ostermillerutils 1.00.00
    • toString

      public String toString()
      Returns 32-character hex representation of this hash.
      Overrides:
      toString in class Object
      Returns:
      String representation of this object's hash.
      Since:
      ostermillerutils 1.00.00
    • update

      public void update(byte[] buffer, int offset, int length)
      Update this hash with the given data.

      If length bytes are not available to be hashed, as many bytes as possible will be hashed.

      Parameters:
      buffer - Array of bytes to be hashed.
      offset - Offset to buffer array.
      length - number of bytes to hash.
      Since:
      ostermillerutils 1.00.00
    • update

      public void update(byte[] buffer, int length)
      Update this hash with the given data.

      If length bytes are not available to be hashed, as many bytes as possible will be hashed.

      Parameters:
      buffer - Array of bytes to be hashed.
      length - number of bytes to hash.
      Since:
      ostermillerutils 1.00.00
    • update

      public void update(byte[] buffer)
      Update this hash with the given data.
      Parameters:
      buffer - Array of bytes to be hashed.
      Since:
      ostermillerutils 1.00.00
    • update

      public void update(byte b)
      Updates this hash with a single byte.
      Parameters:
      b - byte to be hashed.
      Since:
      ostermillerutils 1.00.00
    • update

      public void update(String s)
      Update this hash with a String. The string is converted to bytes using the current platform's default character encoding.
      Parameters:
      s - String to be hashed.
      Since:
      ostermillerutils 1.00.00
    • update

      public void update(String s, String enc) throws UnsupportedEncodingException
      Update this hash with a String.
      Parameters:
      s - String to be hashed.
      enc - The name of a supported character encoding.
      Throws:
      UnsupportedEncodingException - If the named encoding is not supported.
      Since:
      ostermillerutils 1.00.00