Class SHA256


  • public class SHA256
    extends java.lang.Object
    This class implements the cryptographic hash function SHA-256.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private SHA256()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static byte[] getHash​(byte[] data, boolean nullData)
      Calculate the hash code for the given data.
      static byte[] getHashWithSalt​(byte[] data, byte[] salt)
      Calculate the hash code by using the given salt.
      static byte[] getHMAC​(byte[] key, byte[] message)
      Calculate the hash-based message authentication code.
      static byte[] getKeyPasswordHash​(java.lang.String userName, char[] password)
      Calculate the hash of a password by prepending the user name and a '@' character.
      static byte[] getPBKDF2​(byte[] password, byte[] salt, int iterations, int resultLen)
      Calculate the hash using the password-based key derivation function 2.
      private static javax.crypto.Mac initMac​(byte[] key)  
      • Methods inherited from class java.lang.Object

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

      • SHA256

        private SHA256()
    • Method Detail

      • getHashWithSalt

        public static byte[] getHashWithSalt​(byte[] data,
                                             byte[] salt)
        Calculate the hash code by using the given salt. The salt is appended after the data before the hash code is calculated. After generating the hash code, the data and all internal buffers are filled with zeros to avoid keeping insecure data in memory longer than required (and possibly swapped to disk).
        Parameters:
        data - the data to hash
        salt - the salt to use
        Returns:
        the hash code
      • getKeyPasswordHash

        public static byte[] getKeyPasswordHash​(java.lang.String userName,
                                                char[] password)
        Calculate the hash of a password by prepending the user name and a '@' character. Both the user name and the password are encoded to a byte array using UTF-16. After generating the hash code, the password array and all internal buffers are filled with zeros to avoid keeping the plain text password in memory longer than required (and possibly swapped to disk).
        Parameters:
        userName - the user name
        password - the password
        Returns:
        the hash code
      • getHMAC

        public static byte[] getHMAC​(byte[] key,
                                     byte[] message)
        Calculate the hash-based message authentication code.
        Parameters:
        key - the key
        message - the message
        Returns:
        the hash
      • initMac

        private static javax.crypto.Mac initMac​(byte[] key)
      • getPBKDF2

        public static byte[] getPBKDF2​(byte[] password,
                                       byte[] salt,
                                       int iterations,
                                       int resultLen)
        Calculate the hash using the password-based key derivation function 2.
        Parameters:
        password - the password
        salt - the salt
        iterations - the number of iterations
        resultLen - the number of bytes in the result
        Returns:
        the result
      • getHash

        public static byte[] getHash​(byte[] data,
                                     boolean nullData)
        Calculate the hash code for the given data.
        Parameters:
        data - the data to hash
        nullData - if the data should be filled with zeros after calculating the hash code
        Returns:
        the hash code