Class DigestUtils


  • public class DigestUtils
    extends java.lang.Object
    Operations to simplify common MessageDigest tasks. This class is immutable and thread-safe.
    Version:
    $Id: DigestUtils.java 1634433 2014-10-27 01:10:47Z ggregory $
    • Constructor Summary

      Constructors 
      Constructor Description
      DigestUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      private static byte[] digest​(java.security.MessageDigest digest, java.io.InputStream data)
      Read through an InputStream and returns the digest for the data
      static java.security.MessageDigest getDigest​(java.lang.String algorithm)
      Returns a MessageDigest for the given algorithm.
      static java.security.MessageDigest getMd2Digest()
      Returns an MD2 MessageDigest.
      static java.security.MessageDigest getMd5Digest()
      Returns an MD5 MessageDigest.
      static java.security.MessageDigest getSha1Digest()
      Returns an SHA-1 digest.
      static java.security.MessageDigest getSha256Digest()
      Returns an SHA-256 digest.
      static java.security.MessageDigest getSha384Digest()
      Returns an SHA-384 digest.
      static java.security.MessageDigest getSha512Digest()
      Returns an SHA-512 digest.
      static java.security.MessageDigest getShaDigest()
      Deprecated.
      static byte[] md2​(byte[] data)
      Calculates the MD2 digest and returns the value as a 16 element byte[].
      static byte[] md2​(java.io.InputStream data)
      Calculates the MD2 digest and returns the value as a 16 element byte[].
      static byte[] md2​(java.lang.String data)
      Calculates the MD2 digest and returns the value as a 16 element byte[].
      static java.lang.String md2Hex​(byte[] data)
      Calculates the MD2 digest and returns the value as a 32 character hex string.
      static java.lang.String md2Hex​(java.io.InputStream data)
      Calculates the MD2 digest and returns the value as a 32 character hex string.
      static java.lang.String md2Hex​(java.lang.String data)
      Calculates the MD2 digest and returns the value as a 32 character hex string.
      static byte[] md5​(byte[] data)
      Calculates the MD5 digest and returns the value as a 16 element byte[].
      static byte[] md5​(java.io.InputStream data)
      Calculates the MD5 digest and returns the value as a 16 element byte[].
      static byte[] md5​(java.lang.String data)
      Calculates the MD5 digest and returns the value as a 16 element byte[].
      static java.lang.String md5Hex​(byte[] data)
      Calculates the MD5 digest and returns the value as a 32 character hex string.
      static java.lang.String md5Hex​(java.io.InputStream data)
      Calculates the MD5 digest and returns the value as a 32 character hex string.
      static java.lang.String md5Hex​(java.lang.String data)
      Calculates the MD5 digest and returns the value as a 32 character hex string.
      static byte[] sha​(byte[] data)
      Deprecated.
      static byte[] sha​(java.io.InputStream data)
      Deprecated.
      static byte[] sha​(java.lang.String data)
      Deprecated.
      static byte[] sha1​(byte[] data)
      Calculates the SHA-1 digest and returns the value as a byte[].
      static byte[] sha1​(java.io.InputStream data)
      Calculates the SHA-1 digest and returns the value as a byte[].
      static byte[] sha1​(java.lang.String data)
      Calculates the SHA-1 digest and returns the value as a byte[].
      static java.lang.String sha1Hex​(byte[] data)
      Calculates the SHA-1 digest and returns the value as a hex string.
      static java.lang.String sha1Hex​(java.io.InputStream data)
      Calculates the SHA-1 digest and returns the value as a hex string.
      static java.lang.String sha1Hex​(java.lang.String data)
      Calculates the SHA-1 digest and returns the value as a hex string.
      static byte[] sha256​(byte[] data)
      Calculates the SHA-256 digest and returns the value as a byte[].
      static byte[] sha256​(java.io.InputStream data)
      Calculates the SHA-256 digest and returns the value as a byte[].
      static byte[] sha256​(java.lang.String data)
      Calculates the SHA-256 digest and returns the value as a byte[].
      static java.lang.String sha256Hex​(byte[] data)
      Calculates the SHA-256 digest and returns the value as a hex string.
      static java.lang.String sha256Hex​(java.io.InputStream data)
      Calculates the SHA-256 digest and returns the value as a hex string.
      static java.lang.String sha256Hex​(java.lang.String data)
      Calculates the SHA-256 digest and returns the value as a hex string.
      static byte[] sha384​(byte[] data)
      Calculates the SHA-384 digest and returns the value as a byte[].
      static byte[] sha384​(java.io.InputStream data)
      Calculates the SHA-384 digest and returns the value as a byte[].
      static byte[] sha384​(java.lang.String data)
      Calculates the SHA-384 digest and returns the value as a byte[].
      static java.lang.String sha384Hex​(byte[] data)
      Calculates the SHA-384 digest and returns the value as a hex string.
      static java.lang.String sha384Hex​(java.io.InputStream data)
      Calculates the SHA-384 digest and returns the value as a hex string.
      static java.lang.String sha384Hex​(java.lang.String data)
      Calculates the SHA-384 digest and returns the value as a hex string.
      static byte[] sha512​(byte[] data)
      Calculates the SHA-512 digest and returns the value as a byte[].
      static byte[] sha512​(java.io.InputStream data)
      Calculates the SHA-512 digest and returns the value as a byte[].
      static byte[] sha512​(java.lang.String data)
      Calculates the SHA-512 digest and returns the value as a byte[].
      static java.lang.String sha512Hex​(byte[] data)
      Calculates the SHA-512 digest and returns the value as a hex string.
      static java.lang.String sha512Hex​(java.io.InputStream data)
      Calculates the SHA-512 digest and returns the value as a hex string.
      static java.lang.String sha512Hex​(java.lang.String data)
      Calculates the SHA-512 digest and returns the value as a hex string.
      static java.lang.String shaHex​(byte[] data)
      Deprecated.
      static java.lang.String shaHex​(java.io.InputStream data)
      Deprecated.
      static java.lang.String shaHex​(java.lang.String data)
      Deprecated.
      static java.security.MessageDigest updateDigest​(java.security.MessageDigest messageDigest, byte[] valueToDigest)
      Updates the given MessageDigest.
      static java.security.MessageDigest updateDigest​(java.security.MessageDigest digest, java.io.InputStream data)
      Reads through an InputStream and updates the digest for the data
      static java.security.MessageDigest updateDigest​(java.security.MessageDigest messageDigest, java.lang.String valueToDigest)
      Updates the given MessageDigest.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DigestUtils

        public DigestUtils()
    • Method Detail

      • digest

        private static byte[] digest​(java.security.MessageDigest digest,
                                     java.io.InputStream data)
                              throws java.io.IOException
        Read through an InputStream and returns the digest for the data
        Parameters:
        digest - The MessageDigest to use (e.g. MD5)
        data - Data to digest
        Returns:
        the digest
        Throws:
        java.io.IOException - On error reading from the stream
      • getDigest

        public static java.security.MessageDigest getDigest​(java.lang.String algorithm)
        Returns a MessageDigest for the given algorithm.
        Parameters:
        algorithm - the name of the algorithm requested. See Appendix A in the Java Cryptography Architecture Reference Guide for information about standard algorithm names.
        Returns:
        A digest instance.
        Throws:
        java.lang.IllegalArgumentException - when a NoSuchAlgorithmException is caught.
        See Also:
        MessageDigest.getInstance(String)
      • getMd2Digest

        public static java.security.MessageDigest getMd2Digest()
        Returns an MD2 MessageDigest.
        Returns:
        An MD2 digest instance.
        Throws:
        java.lang.IllegalArgumentException - when a NoSuchAlgorithmException is caught, which should never happen because MD2 is a built-in algorithm
        Since:
        1.7
        See Also:
        MessageDigestAlgorithms.MD2
      • getMd5Digest

        public static java.security.MessageDigest getMd5Digest()
        Returns an MD5 MessageDigest.
        Returns:
        An MD5 digest instance.
        Throws:
        java.lang.IllegalArgumentException - when a NoSuchAlgorithmException is caught, which should never happen because MD5 is a built-in algorithm
        See Also:
        MessageDigestAlgorithms.MD5
      • getSha1Digest

        public static java.security.MessageDigest getSha1Digest()
        Returns an SHA-1 digest.
        Returns:
        An SHA-1 digest instance.
        Throws:
        java.lang.IllegalArgumentException - when a NoSuchAlgorithmException is caught, which should never happen because SHA-1 is a built-in algorithm
        Since:
        1.7
        See Also:
        MessageDigestAlgorithms.SHA_1
      • getSha256Digest

        public static java.security.MessageDigest getSha256Digest()
        Returns an SHA-256 digest.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Returns:
        An SHA-256 digest instance.
        Throws:
        java.lang.IllegalArgumentException - when a NoSuchAlgorithmException is caught, which should never happen because SHA-256 is a built-in algorithm
        See Also:
        MessageDigestAlgorithms.SHA_256
      • getSha384Digest

        public static java.security.MessageDigest getSha384Digest()
        Returns an SHA-384 digest.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Returns:
        An SHA-384 digest instance.
        Throws:
        java.lang.IllegalArgumentException - when a NoSuchAlgorithmException is caught, which should never happen because SHA-384 is a built-in algorithm
        See Also:
        MessageDigestAlgorithms.SHA_384
      • getSha512Digest

        public static java.security.MessageDigest getSha512Digest()
        Returns an SHA-512 digest.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Returns:
        An SHA-512 digest instance.
        Throws:
        java.lang.IllegalArgumentException - when a NoSuchAlgorithmException is caught, which should never happen because SHA-512 is a built-in algorithm
        See Also:
        MessageDigestAlgorithms.SHA_512
      • getShaDigest

        @Deprecated
        public static java.security.MessageDigest getShaDigest()
        Deprecated.
        Returns an SHA-1 digest.
        Returns:
        An SHA-1 digest instance.
        Throws:
        java.lang.IllegalArgumentException - when a NoSuchAlgorithmException is caught
      • md2

        public static byte[] md2​(byte[] data)
        Calculates the MD2 digest and returns the value as a 16 element byte[].
        Parameters:
        data - Data to digest
        Returns:
        MD2 digest
        Since:
        1.7
      • md2

        public static byte[] md2​(java.io.InputStream data)
                          throws java.io.IOException
        Calculates the MD2 digest and returns the value as a 16 element byte[].
        Parameters:
        data - Data to digest
        Returns:
        MD2 digest
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.7
      • md2

        public static byte[] md2​(java.lang.String data)
        Calculates the MD2 digest and returns the value as a 16 element byte[].
        Parameters:
        data - Data to digest; converted to bytes using StringUtils.getBytesUtf8(String)
        Returns:
        MD2 digest
        Since:
        1.7
      • md2Hex

        public static java.lang.String md2Hex​(byte[] data)
        Calculates the MD2 digest and returns the value as a 32 character hex string.
        Parameters:
        data - Data to digest
        Returns:
        MD2 digest as a hex string
        Since:
        1.7
      • md2Hex

        public static java.lang.String md2Hex​(java.io.InputStream data)
                                       throws java.io.IOException
        Calculates the MD2 digest and returns the value as a 32 character hex string.
        Parameters:
        data - Data to digest
        Returns:
        MD2 digest as a hex string
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.7
      • md2Hex

        public static java.lang.String md2Hex​(java.lang.String data)
        Calculates the MD2 digest and returns the value as a 32 character hex string.
        Parameters:
        data - Data to digest
        Returns:
        MD2 digest as a hex string
        Since:
        1.7
      • md5

        public static byte[] md5​(byte[] data)
        Calculates the MD5 digest and returns the value as a 16 element byte[].
        Parameters:
        data - Data to digest
        Returns:
        MD5 digest
      • md5

        public static byte[] md5​(java.io.InputStream data)
                          throws java.io.IOException
        Calculates the MD5 digest and returns the value as a 16 element byte[].
        Parameters:
        data - Data to digest
        Returns:
        MD5 digest
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • md5

        public static byte[] md5​(java.lang.String data)
        Calculates the MD5 digest and returns the value as a 16 element byte[].
        Parameters:
        data - Data to digest; converted to bytes using StringUtils.getBytesUtf8(String)
        Returns:
        MD5 digest
      • md5Hex

        public static java.lang.String md5Hex​(byte[] data)
        Calculates the MD5 digest and returns the value as a 32 character hex string.
        Parameters:
        data - Data to digest
        Returns:
        MD5 digest as a hex string
      • md5Hex

        public static java.lang.String md5Hex​(java.io.InputStream data)
                                       throws java.io.IOException
        Calculates the MD5 digest and returns the value as a 32 character hex string.
        Parameters:
        data - Data to digest
        Returns:
        MD5 digest as a hex string
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • md5Hex

        public static java.lang.String md5Hex​(java.lang.String data)
        Calculates the MD5 digest and returns the value as a 32 character hex string.
        Parameters:
        data - Data to digest
        Returns:
        MD5 digest as a hex string
      • sha

        @Deprecated
        public static byte[] sha​(byte[] data)
        Deprecated.
        Calculates the SHA-1 digest and returns the value as a byte[].
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest
      • sha

        @Deprecated
        public static byte[] sha​(java.io.InputStream data)
                          throws java.io.IOException
        Deprecated.
        Calculates the SHA-1 digest and returns the value as a byte[].
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • sha

        @Deprecated
        public static byte[] sha​(java.lang.String data)
        Deprecated.
        Calculates the SHA-1 digest and returns the value as a byte[].
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest
      • sha1

        public static byte[] sha1​(byte[] data)
        Calculates the SHA-1 digest and returns the value as a byte[].
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest
        Since:
        1.7
      • sha1

        public static byte[] sha1​(java.io.InputStream data)
                           throws java.io.IOException
        Calculates the SHA-1 digest and returns the value as a byte[].
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.7
      • sha1

        public static byte[] sha1​(java.lang.String data)
        Calculates the SHA-1 digest and returns the value as a byte[].
        Parameters:
        data - Data to digest; converted to bytes using StringUtils.getBytesUtf8(String)
        Returns:
        SHA-1 digest
      • sha1Hex

        public static java.lang.String sha1Hex​(byte[] data)
        Calculates the SHA-1 digest and returns the value as a hex string.
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest as a hex string
        Since:
        1.7
      • sha1Hex

        public static java.lang.String sha1Hex​(java.io.InputStream data)
                                        throws java.io.IOException
        Calculates the SHA-1 digest and returns the value as a hex string.
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest as a hex string
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.7
      • sha1Hex

        public static java.lang.String sha1Hex​(java.lang.String data)
        Calculates the SHA-1 digest and returns the value as a hex string.
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest as a hex string
        Since:
        1.7
      • sha256

        public static byte[] sha256​(byte[] data)
        Calculates the SHA-256 digest and returns the value as a byte[].

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-256 digest
        Since:
        1.4
      • sha256

        public static byte[] sha256​(java.io.InputStream data)
                             throws java.io.IOException
        Calculates the SHA-256 digest and returns the value as a byte[].

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-256 digest
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • sha256

        public static byte[] sha256​(java.lang.String data)
        Calculates the SHA-256 digest and returns the value as a byte[].

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest; converted to bytes using StringUtils.getBytesUtf8(String)
        Returns:
        SHA-256 digest
        Since:
        1.4
      • sha256Hex

        public static java.lang.String sha256Hex​(byte[] data)
        Calculates the SHA-256 digest and returns the value as a hex string.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-256 digest as a hex string
        Since:
        1.4
      • sha256Hex

        public static java.lang.String sha256Hex​(java.io.InputStream data)
                                          throws java.io.IOException
        Calculates the SHA-256 digest and returns the value as a hex string.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-256 digest as a hex string
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • sha256Hex

        public static java.lang.String sha256Hex​(java.lang.String data)
        Calculates the SHA-256 digest and returns the value as a hex string.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-256 digest as a hex string
        Since:
        1.4
      • sha384

        public static byte[] sha384​(byte[] data)
        Calculates the SHA-384 digest and returns the value as a byte[].

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-384 digest
        Since:
        1.4
      • sha384

        public static byte[] sha384​(java.io.InputStream data)
                             throws java.io.IOException
        Calculates the SHA-384 digest and returns the value as a byte[].

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-384 digest
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • sha384

        public static byte[] sha384​(java.lang.String data)
        Calculates the SHA-384 digest and returns the value as a byte[].

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest; converted to bytes using StringUtils.getBytesUtf8(String)
        Returns:
        SHA-384 digest
        Since:
        1.4
      • sha384Hex

        public static java.lang.String sha384Hex​(byte[] data)
        Calculates the SHA-384 digest and returns the value as a hex string.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-384 digest as a hex string
        Since:
        1.4
      • sha384Hex

        public static java.lang.String sha384Hex​(java.io.InputStream data)
                                          throws java.io.IOException
        Calculates the SHA-384 digest and returns the value as a hex string.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-384 digest as a hex string
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • sha384Hex

        public static java.lang.String sha384Hex​(java.lang.String data)
        Calculates the SHA-384 digest and returns the value as a hex string.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-384 digest as a hex string
        Since:
        1.4
      • sha512

        public static byte[] sha512​(byte[] data)
        Calculates the SHA-512 digest and returns the value as a byte[].

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-512 digest
        Since:
        1.4
      • sha512

        public static byte[] sha512​(java.io.InputStream data)
                             throws java.io.IOException
        Calculates the SHA-512 digest and returns the value as a byte[].

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-512 digest
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • sha512

        public static byte[] sha512​(java.lang.String data)
        Calculates the SHA-512 digest and returns the value as a byte[].

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest; converted to bytes using StringUtils.getBytesUtf8(String)
        Returns:
        SHA-512 digest
        Since:
        1.4
      • sha512Hex

        public static java.lang.String sha512Hex​(byte[] data)
        Calculates the SHA-512 digest and returns the value as a hex string.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-512 digest as a hex string
        Since:
        1.4
      • sha512Hex

        public static java.lang.String sha512Hex​(java.io.InputStream data)
                                          throws java.io.IOException
        Calculates the SHA-512 digest and returns the value as a hex string.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-512 digest as a hex string
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • sha512Hex

        public static java.lang.String sha512Hex​(java.lang.String data)
        Calculates the SHA-512 digest and returns the value as a hex string.

        Throws a RuntimeException on JRE versions prior to 1.4.0.

        Parameters:
        data - Data to digest
        Returns:
        SHA-512 digest as a hex string
        Since:
        1.4
      • shaHex

        @Deprecated
        public static java.lang.String shaHex​(byte[] data)
        Deprecated.
        Calculates the SHA-1 digest and returns the value as a hex string.
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest as a hex string
      • shaHex

        @Deprecated
        public static java.lang.String shaHex​(java.io.InputStream data)
                                       throws java.io.IOException
        Deprecated.
        Calculates the SHA-1 digest and returns the value as a hex string.
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest as a hex string
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.4
      • shaHex

        @Deprecated
        public static java.lang.String shaHex​(java.lang.String data)
        Deprecated.
        Calculates the SHA-1 digest and returns the value as a hex string.
        Parameters:
        data - Data to digest
        Returns:
        SHA-1 digest as a hex string
      • updateDigest

        public static java.security.MessageDigest updateDigest​(java.security.MessageDigest messageDigest,
                                                               byte[] valueToDigest)
        Updates the given MessageDigest.
        Parameters:
        messageDigest - the MessageDigest to update
        valueToDigest - the value to update the MessageDigest with
        Returns:
        the updated MessageDigest
        Since:
        1.7
      • updateDigest

        public static java.security.MessageDigest updateDigest​(java.security.MessageDigest digest,
                                                               java.io.InputStream data)
                                                        throws java.io.IOException
        Reads through an InputStream and updates the digest for the data
        Parameters:
        digest - The MessageDigest to use (e.g. MD5)
        data - Data to digest
        Returns:
        the digest
        Throws:
        java.io.IOException - On error reading from the stream
        Since:
        1.8
      • updateDigest

        public static java.security.MessageDigest updateDigest​(java.security.MessageDigest messageDigest,
                                                               java.lang.String valueToDigest)
        Updates the given MessageDigest.
        Parameters:
        messageDigest - the MessageDigest to update
        valueToDigest - the value to update the MessageDigest with; converted to bytes using StringUtils.getBytesUtf8(String)
        Returns:
        the updated MessageDigest
        Since:
        1.7