Class HC256Engine

  • All Implemented Interfaces:
    StreamCipher

    public class HC256Engine
    extends Object
    implements StreamCipher
    HC-256 is a software-efficient stream cipher created by Hongjun Wu. It generates keystream from a 256-bit secret key and a 256-bit initialization vector.

    https://www.ecrypt.eu.org/stream/p3ciphers/hc/hc256_p3.pdf

    Its brother, HC-128, is a third phase candidate in the eStream contest. The algorithm is patent-free. No attacks are known as of today (April 2007). See https://www.ecrypt.eu.org/stream/hcp3.html

    • Constructor Detail

      • HC256Engine

        public HC256Engine()
    • Method Detail

      • getAlgorithmName

        public String getAlgorithmName()
        Description copied from interface: StreamCipher
        Return the name of the algorithm the cipher implements.
        Specified by:
        getAlgorithmName in interface StreamCipher
        Returns:
        the name of the algorithm the cipher implements.
      • init

        public void init​(boolean forEncryption,
                         CipherParameters params)
                  throws IllegalArgumentException
        Initialise a HC-256 cipher.
        Specified by:
        init in interface StreamCipher
        Parameters:
        forEncryption - whether or not we are for encryption. Irrelevant, as encryption and decryption are the same.
        params - the parameters required to set up the cipher.
        Throws:
        IllegalArgumentException - if the params argument is inappropriate (ie. the key is not 256 bit long).
      • processBytes

        public int processBytes​(byte[] in,
                                int inOff,
                                int len,
                                byte[] out,
                                int outOff)
                         throws DataLengthException
        Description copied from interface: StreamCipher
        process a block of bytes from in putting the result into out.
        Specified by:
        processBytes in interface StreamCipher
        Parameters:
        in - the input byte array.
        inOff - the offset into the in array where the data to be processed starts.
        len - the number of bytes to be processed.
        out - the output buffer the processed bytes go into.
        outOff - the offset into the output byte array the processed data starts at.
        Returns:
        the number of bytes produced - should always be len.
        Throws:
        DataLengthException - if the output buffer is too small.
      • reset

        public void reset()
        Description copied from interface: StreamCipher
        reset the cipher. This leaves it in the same state it was at after the last init (if there was one).
        Specified by:
        reset in interface StreamCipher
      • returnByte

        public byte returnByte​(byte in)
        Description copied from interface: StreamCipher
        encrypt/decrypt a single byte returning the result.
        Specified by:
        returnByte in interface StreamCipher
        Parameters:
        in - the byte to be processed.
        Returns:
        the result of processing the input byte.