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 http://keccak.noekeon.org/

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

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void absorb​(byte data)  
      protected void absorb​(byte[] data, int off, int len)  
      protected void absorbBits​(int data, int bits)  
      int doFinal​(byte[] out, int outOff)
      close the digest, producing the final digest value.
      protected int doFinal​(byte[] out, int outOff, byte partialByte, int partialBits)  
      protected byte[] dumpState()  
      java.lang.String getAlgorithmName()
      return the algorithm name
      int getByteLength()
      Return the size of block that the compression function is applied to in bytes.
      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.
      protected void squeeze​(byte[] output, int offset, long outputLength)  
      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
    • 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)
      • dumpState

        protected byte[] dumpState()
      • squeeze

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