Class ParallelHash

  • All Implemented Interfaces:
    Digest, ExtendedDigest, Xof

    public class ParallelHash
    extends java.lang.Object
    implements Xof, Digest
    ParallelHash - a hash designed to support the efficient hashing of very long strings, by taking advantage of the parallelism available in modern processors with an optional XOF mode.

    From NIST Special Publication 800-185 - SHA-3 Derived Functions:cSHAKE, KMAC, TupleHash and ParallelHash

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int doFinal​(byte[] out, int outOff)
      close the digest, producing the final digest value.
      int doFinal​(byte[] out, int outOff, int outLen)
      Output the results of the final calculation for this digest to outLen number of bytes.
      int doOutput​(byte[] out, int outOff, int outLen)
      Start outputting the results of the final calculation for this digest.
      java.lang.String getAlgorithmName()
      return the algorithm name
      int getByteLength()
      Return the size in bytes of the internal buffer the digest applies it's compression function to.
      int getDigestSize()
      return the size, in bytes, of the digest produced by this message digest.
      void reset()
      reset the digest back to it's initial state.
      void update​(byte in)
      update the message digest with a single byte.
      void update​(byte[] in, int inOff, 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 Detail

      • ParallelHash

        public ParallelHash​(int bitLength,
                            byte[] S,
                            int B)
        Base constructor.
        Parameters:
        bitLength - security strength (bits) of the underlying SHAKE function, 128 or 256.
        S - the customization string - available for local use.
        B - the blocksize (in bytes) for hashing.
      • ParallelHash

        public ParallelHash​(int bitLength,
                            byte[] S,
                            int B,
                            int outputSize)
      • ParallelHash

        public ParallelHash​(int bitLength,
                            byte[] S,
                            int B,
                            int outputSize,
                            CryptoServicePurpose purpose)
      • ParallelHash

        public ParallelHash​(ParallelHash source)
    • Method Detail

      • getAlgorithmName

        public java.lang.String getAlgorithmName()
        Description copied from interface: Digest
        return the algorithm name
        Specified by:
        getAlgorithmName in interface Digest
        Returns:
        the algorithm name
      • getByteLength

        public int getByteLength()
        Description copied from interface: ExtendedDigest
        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.
      • getDigestSize

        public int getDigestSize()
        Description copied from interface: Digest
        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.
      • update

        public void update​(byte in)
                    throws java.lang.IllegalStateException
        Description copied from interface: Digest
        update the message digest with a single byte.
        Specified by:
        update in interface Digest
        Parameters:
        in - the input byte to be entered.
        Throws:
        java.lang.IllegalStateException
      • update

        public void update​(byte[] in,
                           int inOff,
                           int len)
                    throws DataLengthException,
                           java.lang.IllegalStateException
        Description copied from interface: Digest
        update the message digest with a block of bytes.
        Specified by:
        update in interface Digest
        Parameters:
        in - the byte array containing the data.
        inOff - the offset into the byte array where the data starts.
        len - the length of the data.
        Throws:
        DataLengthException
        java.lang.IllegalStateException
      • doFinal

        public int doFinal​(byte[] out,
                           int outOff)
                    throws DataLengthException,
                           java.lang.IllegalStateException
        Description copied from interface: Digest
        close the digest, producing the final digest value. The doFinal call leaves the digest reset.
        Specified by:
        doFinal in interface Digest
        Parameters:
        out - the array the digest is to be copied into.
        outOff - the offset into the out array the digest is to start at.
        Throws:
        DataLengthException
        java.lang.IllegalStateException
      • doFinal

        public int doFinal​(byte[] out,
                           int outOff,
                           int outLen)
        Description copied from interface: Xof
        Output the results of the final calculation for this digest to outLen number of bytes.
        Specified by:
        doFinal in interface Xof
        Parameters:
        out - output array to write the output bytes to.
        outOff - offset to start writing the bytes at.
        outLen - the number of output bytes requested.
        Returns:
        the number of bytes written
      • doOutput

        public int doOutput​(byte[] out,
                            int outOff,
                            int outLen)
        Description copied from interface: Xof
        Start outputting the results of the final calculation for this digest. Unlike doFinal, this method will continue producing output until the Xof is explicitly reset, or signals otherwise.
        Specified by:
        doOutput in interface Xof
        Parameters:
        out - output array to write the output bytes to.
        outOff - offset to start writing the bytes at.
        outLen - the number of output bytes requested.
        Returns:
        the number of bytes written
      • reset

        public void reset()
        Description copied from interface: Digest
        reset the digest back to it's initial state.
        Specified by:
        reset in interface Digest