java.lang.Object
org.bouncycastle.pqc.legacy.crypto.rainbow.util.GF2Field

public class GF2Field extends Object
This class provides the basic operations like addition, multiplication and finding the multiplicative inverse of an element in GF2^8.

The operations are implemented using the irreducible polynomial 1+x^2+x^3+x^6+x^8 ( 1 0100 1101 = 0x14d )

This class makes use of lookup tables(exps and logs) for implementing the operations in order to increase the efficiency of Rainbow.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static short
    addElem(short x, short y)
    This function calculates the sum of two elements as an operation in GF2^8
    static short
    getExp(short x)
    This function returns the values of exps-lookup table which correspond to the input
    static short
    getLog(short x)
    This function returns the values of logs-lookup table which correspond to the input
    static short
    invElem(short x)
    This function computes the multiplicative inverse of a given element in GF2^8 The 0 has no multiplicative inverse and in this case 0 is returned.
    static short
    multElem(short x, short y)
    This function multiplies two elements in GF2^8.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • GF2Field

      public GF2Field()
  • Method Details

    • addElem

      public static short addElem(short x, short y)
      This function calculates the sum of two elements as an operation in GF2^8
      Parameters:
      x - the first element that is to be added
      y - the second element that should be add
      Returns:
      the sum of the two elements x and y in GF2^8
    • invElem

      public static short invElem(short x)
      This function computes the multiplicative inverse of a given element in GF2^8 The 0 has no multiplicative inverse and in this case 0 is returned.
      Parameters:
      x - the element which multiplicative inverse is to be computed
      Returns:
      the multiplicative inverse of the given element, in case it exists or 0, otherwise
    • multElem

      public static short multElem(short x, short y)
      This function multiplies two elements in GF2^8. If one of the two elements is 0, 0 is returned.
      Parameters:
      x - the first element to be multiplied.
      y - the second element to be multiplied.
      Returns:
      the product of the two input elements in GF2^8.
    • getExp

      public static short getExp(short x)
      This function returns the values of exps-lookup table which correspond to the input
      Parameters:
      x - the index in the lookup table exps
      Returns:
      exps-value, corresponding to the input
    • getLog

      public static short getLog(short x)
      This function returns the values of logs-lookup table which correspond to the input
      Parameters:
      x - the index in the lookup table logs
      Returns:
      logs-value, corresponding to the input