Package org.bouncycastle.crypto.digests
Class Blake2bDigest
java.lang.Object
org.bouncycastle.crypto.digests.Blake2bDigest
- All Implemented Interfaces:
Digest
,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
ConstructorDescriptionBlake2bDigest
(byte[] key) Blake2b for authentication ("Prefix-MAC mode").Blake2bDigest
(byte[] key, byte[] param) Blake2bDigest
(byte[] key, int digestLength, byte[] salt, byte[] personalization) Blake2b with key, required digest length (in bytes), salt and personalization.Blake2bDigest
(byte[] key, int digestLength, byte[] salt, byte[] personalization, CryptoServicePurpose purpose) Blake2bDigest
(byte[] key, CryptoServicePurpose purpose) Blake2bDigest
(int digestSize) Basic sized constructor - size in bits.Blake2bDigest
(int digestSize, CryptoServicePurpose purpose) Basic sized constructor with purpose.Blake2bDigest
(Blake2bDigest digest) -
Method Summary
Modifier and TypeMethodDescriptionvoid
clearKey()
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 nameint
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()
Reset the digest back to it's initial state.protected void
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.
-
Constructor Details
-
Blake2bDigest
public Blake2bDigest() -
Blake2bDigest
public Blake2bDigest(int digestSize) Basic sized constructor - size in bits.- Parameters:
digestSize
- size of digest (in bits)
-
Blake2bDigest
-
Blake2bDigest
Basic sized constructor with purpose.- Parameters:
digestSize
- size of the digest in bitspurpose
- usage purpose.
-
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
-
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 nulldigestLength
- from 1 up to 64 bytessalt
- 16 bytes or nullpersonalization
- 16 bytes or null
-
Blake2bDigest
public Blake2bDigest(byte[] key, int digestLength, byte[] salt, byte[] personalization, CryptoServicePurpose purpose) -
Blake2bDigest
public Blake2bDigest(byte[] key, byte[] param)
-
-
Method Details
-
update
public void update(byte b) update the message digest with a single byte. -
update
public void update(byte[] message, int offset, int len) update the message digest with a block of bytes. -
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. -
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. -
setAsLastNode
protected void setAsLastNode() -
getAlgorithmName
return the algorithm name- Specified by:
getAlgorithmName
in interfaceDigest
- 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 interfaceDigest
- 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 interfaceExtendedDigest
- 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)
-