Class KeccakDigest

  • All Implemented Interfaces:
    Digest, ExtendedDigest
    Direct Known Subclasses:
    SHA3Digest, SHAKEDigest

    public class KeccakDigest
    extends java.lang.Object
    implements ExtendedDigest
    implementation of Keccak based on following KeccakNISTInterface.c from https://keccak.noekeon.org/

    Following the naming conventions used in the C source code to enable easy review of the implementation.

    • Field Detail

      • state

        protected long[] state
      • dataQueue

        protected byte[] dataQueue
      • rate

        protected int rate
      • bitsInQueue

        protected int bitsInQueue
      • fixedOutputLength

        protected int fixedOutputLength
      • squeezing

        protected boolean squeezing
    • Constructor Detail

      • KeccakDigest

        public KeccakDigest()
      • KeccakDigest

        public KeccakDigest​(int bitLength)
      • KeccakDigest

        public KeccakDigest​(KeccakDigest 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
      • 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)
        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.
      • update

        public void update​(byte[] in,
                           int inOff,
                           int len)
        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.
      • doFinal

        public int doFinal​(byte[] out,
                           int outOff)
        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.
      • doFinal

        protected int doFinal​(byte[] out,
                              int outOff,
                              byte partialByte,
                              int partialBits)
      • reset

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

        public int getByteLength()
        Return the size of block that the compression function is applied to in bytes.
        Specified by:
        getByteLength in interface ExtendedDigest
        Returns:
        internal byte length of a block.
      • absorb

        protected void absorb​(byte data)
      • absorb

        protected void absorb​(byte[] data,
                              int off,
                              int len)
      • absorbBits

        protected void absorbBits​(int data,
                                  int bits)
      • squeeze

        protected void squeeze​(byte[] output,
                               int offset,
                               long outputLength)