Class SerpentEngine

  • All Implemented Interfaces:
    BlockCipher

    public final class SerpentEngine
    extends SerpentEngineBase
    Serpent is a 128-bit 32-round block cipher with variable key lengths, including 128, 192 and 256 bit keys conjectured to be at least as secure as three-key triple-DES.

    Serpent was designed by Ross Anderson, Eli Biham and Lars Knudsen as a candidate algorithm for the NIST AES Quest.

    For full details see The Serpent home page

    • Constructor Detail

      • SerpentEngine

        public SerpentEngine()
    • Method Detail

      • makeWorkingKey

        protected int[] makeWorkingKey​(byte[] key)
                                throws java.lang.IllegalArgumentException
        Expand a user-supplied key material into a session key.
        Specified by:
        makeWorkingKey in class SerpentEngineBase
        Parameters:
        key - The user-key bytes (multiples of 4) to use.
        Throws:
        java.lang.IllegalArgumentException
      • encryptBlock

        protected void encryptBlock​(byte[] input,
                                    int inOff,
                                    byte[] output,
                                    int outOff)
        Encrypt one block of plaintext.
        Specified by:
        encryptBlock in class SerpentEngineBase
        Parameters:
        input - the array containing the input data.
        inOff - offset into the in array the data starts at.
        output - the array the output data will be copied into.
        outOff - the offset into the out array the output will start at.
      • decryptBlock

        protected void decryptBlock​(byte[] input,
                                    int inOff,
                                    byte[] output,
                                    int outOff)
        Decrypt one block of ciphertext.
        Specified by:
        decryptBlock in class SerpentEngineBase
        Parameters:
        input - the array containing the input data.
        inOff - offset into the in array the data starts at.
        output - the array the output data will be copied into.
        outOff - the offset into the out array the output will start at.