Class ARIAEngine

  • All Implemented Interfaces:
    BlockCipher

    public class ARIAEngine
    extends java.lang.Object
    implements BlockCipher
    RFC 5794. ARIA is a 128-bit block cipher with 128-, 192-, and 256-bit keys.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected static int BLOCK_SIZE  
    • Constructor Summary

      Constructors 
      Constructor Description
      ARIAEngine()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected static void A​(byte[] z)  
      protected static void FE​(byte[] D, byte[] RK)  
      protected static void FO​(byte[] D, byte[] RK)  
      java.lang.String getAlgorithmName()
      Return the name of the algorithm the cipher implements.
      int getBlockSize()
      Return the block size for this cipher (in bytes).
      void init​(boolean forEncryption, CipherParameters params)
      Initialise the cipher.
      protected static byte[][] keySchedule​(boolean forEncryption, byte[] K)  
      protected static void keyScheduleRound​(byte[] rk, byte[] w, byte[] wr, int n)  
      int processBlock​(byte[] in, int inOff, byte[] out, int outOff)
      Process one block of input from the array in and write it to the out array.
      void reset()
      Reset the cipher.
      protected static void reverseKeys​(byte[][] keys)  
      protected static byte SB1​(byte x)  
      protected static byte SB2​(byte x)  
      protected static byte SB3​(byte x)  
      protected static byte SB4​(byte x)  
      protected static void SL1​(byte[] z)  
      protected static void SL2​(byte[] z)  
      protected static void xor​(byte[] z, byte[] x)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ARIAEngine

        public ARIAEngine()
    • Method Detail

      • init

        public void init​(boolean forEncryption,
                         CipherParameters params)
                  throws java.lang.IllegalArgumentException
        Description copied from interface: BlockCipher
        Initialise the cipher.
        Specified by:
        init in interface BlockCipher
        Parameters:
        forEncryption - if true the cipher is initialised for encryption, if false for decryption.
        params - the key and other data required by the cipher.
        Throws:
        java.lang.IllegalArgumentException - if the params argument is inappropriate.
      • getAlgorithmName

        public java.lang.String getAlgorithmName()
        Description copied from interface: BlockCipher
        Return the name of the algorithm the cipher implements.
        Specified by:
        getAlgorithmName in interface BlockCipher
        Returns:
        the name of the algorithm the cipher implements.
      • getBlockSize

        public int getBlockSize()
        Description copied from interface: BlockCipher
        Return the block size for this cipher (in bytes).
        Specified by:
        getBlockSize in interface BlockCipher
        Returns:
        the block size for this cipher in bytes.
      • processBlock

        public int processBlock​(byte[] in,
                                int inOff,
                                byte[] out,
                                int outOff)
                         throws DataLengthException,
                                java.lang.IllegalStateException
        Description copied from interface: BlockCipher
        Process one block of input from the array in and write it to the out array.
        Specified by:
        processBlock in interface BlockCipher
        Parameters:
        in - the array containing the input data.
        inOff - offset into the in array the data starts at.
        out - the array the output data will be copied into.
        outOff - the offset into the out array the output will start at.
        Returns:
        the number of bytes processed and produced.
        Throws:
        DataLengthException - if there isn't enough data in in, or space in out.
        java.lang.IllegalStateException - if the cipher isn't initialised.
      • reset

        public void reset()
        Description copied from interface: BlockCipher
        Reset the cipher. After resetting the cipher is in the same state as it was after the last init (if there was one).
        Specified by:
        reset in interface BlockCipher
      • A

        protected static void A​(byte[] z)
      • FE

        protected static void FE​(byte[] D,
                                 byte[] RK)
      • FO

        protected static void FO​(byte[] D,
                                 byte[] RK)
      • keySchedule

        protected static byte[][] keySchedule​(boolean forEncryption,
                                              byte[] K)
      • keyScheduleRound

        protected static void keyScheduleRound​(byte[] rk,
                                               byte[] w,
                                               byte[] wr,
                                               int n)
      • reverseKeys

        protected static void reverseKeys​(byte[][] keys)
      • SB1

        protected static byte SB1​(byte x)
      • SB2

        protected static byte SB2​(byte x)
      • SB3

        protected static byte SB3​(byte x)
      • SB4

        protected static byte SB4​(byte x)
      • SL1

        protected static void SL1​(byte[] z)
      • SL2

        protected static void SL2​(byte[] z)
      • xor

        protected static void xor​(byte[] z,
                                  byte[] x)