Class SHA256

java.lang.Object
org.h2.security.SHA256

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

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    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(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 Mac
    initMac(byte[] key)
     

    Methods inherited from class java.lang.Object

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

    • SHA256

      private SHA256()
  • Method Details

    • 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(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 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