Class Blake2bDigest

java.lang.Object
org.bouncycastle.crypto.digests.Blake2bDigest
All Implemented Interfaces:
Digest, ExtendedDigest

public class Blake2bDigest extends Object implements ExtendedDigest
Implementation of the cryptographic hash function Blakbe2b.

Blake2b offers a built-in keying mechanism to be used directly for authentication ("Prefix-MAC") rather than a HMAC construction.

Blake2b offers a built-in support for a salt for randomized hashing and a personal string for defining a unique hash function for each application.

BLAKE2b is optimized for 64-bit platforms and produces digests of any size between 1 and 64 bytes.

  • Constructor Summary

    Constructors
    Constructor
    Description
     
    Blake2bDigest(byte[] key)
    Blake2b for authentication ("Prefix-MAC mode").
    Blake2bDigest(byte[] key, int digestLength, byte[] salt, byte[] personalization)
    Blake2b with key, required digest length (in bytes), salt and personalization.
    Blake2bDigest(int digestSize)
    Basic sized constructor - size in bits.
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Overwrite the key if it is no longer used (zeroization)
    void
    Overwrite the salt (pepper) if it is secret and no longer used (zeroization)
    int
    doFinal(byte[] out, int outOffset)
    close the digest, producing the final digest value.
    return the algorithm name
    int
    Return the size in bytes of the internal buffer the digest applies it's compression function to.
    int
    return the size, in bytes, of the digest produced by this message digest.
    void
    Reset the digest back to it's initial state.
    void
    update(byte b)
    update the message digest with a single byte.
    void
    update(byte[] message, int offset, int len)
    update the message digest with a block of bytes.

    Methods inherited from class java.lang.Object

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

    • Blake2bDigest

      public Blake2bDigest()
    • Blake2bDigest

      public Blake2bDigest(Blake2bDigest digest)
    • Blake2bDigest

      public Blake2bDigest(int digestSize)
      Basic sized constructor - size in bits.
      Parameters:
      digestSize - size of the digest in bits
    • Blake2bDigest

      public Blake2bDigest(byte[] key)
      Blake2b for authentication ("Prefix-MAC mode"). After calling the doFinal() method, the key will remain to be used for further computations of this instance. The key can be overwritten using the clearKey() method.
      Parameters:
      key - A key up to 64 bytes or null
    • Blake2bDigest

      public Blake2bDigest(byte[] key, int digestLength, byte[] salt, byte[] personalization)
      Blake2b with key, required digest length (in bytes), salt and personalization. After calling the doFinal() method, the key, the salt and the personal string will remain and might be used for further computations with this instance. The key can be overwritten using the clearKey() method, the salt (pepper) can be overwritten using the clearSalt() method.
      Parameters:
      key - A key up to 64 bytes or null
      digestLength - from 1 up to 64 bytes
      salt - 16 bytes or null
      personalization - 16 bytes or null
  • Method Details

    • update

      public void update(byte b)
      update the message digest with a single byte.
      Specified by:
      update in interface Digest
      Parameters:
      b - the input byte to be entered.
    • update

      public void update(byte[] message, int offset, int len)
      update the message digest with a block of bytes.
      Specified by:
      update in interface Digest
      Parameters:
      message - the byte array containing the data.
      offset - the offset into the byte array where the data starts.
      len - the length of the data.
    • doFinal

      public int doFinal(byte[] out, int outOffset)
      close the digest, producing the final digest value. The doFinal call leaves the digest reset. Key, salt and personal string remain.
      Specified by:
      doFinal in interface Digest
      Parameters:
      out - the array the digest is to be copied into.
      outOffset - the offset into the out array the digest is to start at.
    • reset

      public void reset()
      Reset the digest back to it's initial state. The key, the salt and the personal string will remain for further computations.
      Specified by:
      reset in interface Digest
    • getAlgorithmName

      public String getAlgorithmName()
      return the algorithm name
      Specified by:
      getAlgorithmName in interface Digest
      Returns:
      the algorithm name
    • getDigestSize

      public int getDigestSize()
      return the size, in bytes, of the digest produced by this message digest.
      Specified by:
      getDigestSize in interface Digest
      Returns:
      the size, in bytes, of the digest produced by this message digest.
    • getByteLength

      public int getByteLength()
      Return the size in bytes of the internal buffer the digest applies it's compression function to.
      Specified by:
      getByteLength in interface ExtendedDigest
      Returns:
      byte length of the digests internal buffer.
    • clearKey

      public void clearKey()
      Overwrite the key if it is no longer used (zeroization)
    • clearSalt

      public void clearSalt()
      Overwrite the salt (pepper) if it is secret and no longer used (zeroization)