Class GF2mField


  • public class GF2mField
    extends Object
    This class describes operations with elements from the finite field F = GF(2^m). ( GF(2^m)= GF(2)[A] where A is a root of irreducible polynomial with degree m, each field element B has a polynomial basis representation, i.e. it is represented by a different binary polynomial of degree less than m, B = poly(A) ) All operations are defined only for field with 1< m <32. For the representation of field elements the map f: F->Z, poly(A)->poly(2) is used, where integers have the binary representation. For example: A^7+A^3+A+1 -> (00...0010001011)=139 Also for elements type Integer is used.
    See Also:
    PolynomialRingGF2
    • Constructor Detail

      • GF2mField

        public GF2mField​(int degree)
        create a finite field GF(2^m)
        Parameters:
        degree - the degree of the field
      • GF2mField

        public GF2mField​(int degree,
                         int poly)
        create a finite field GF(2^m) with the fixed field polynomial
        Parameters:
        degree - the degree of the field
        poly - the field polynomial
      • GF2mField

        public GF2mField​(byte[] enc)
      • GF2mField

        public GF2mField​(GF2mField field)
    • Method Detail

      • getDegree

        public int getDegree()
        return degree of the field
        Returns:
        degree of the field
      • getPolynomial

        public int getPolynomial()
        return the field polynomial
        Returns:
        the field polynomial
      • getEncoded

        public byte[] getEncoded()
        return the encoded form of this field
        Returns:
        the field in byte array form
      • add

        public int add​(int a,
                       int b)
        Return sum of two elements
        Parameters:
        a -
        b -
        Returns:
        a+b
      • mult

        public int mult​(int a,
                        int b)
        Return product of two elements
        Parameters:
        a -
        b -
        Returns:
        a*b
      • exp

        public int exp​(int a,
                       int k)
        compute exponentiation a^k
        Parameters:
        a - a field element a
        k - k degree
        Returns:
        a^k
      • inverse

        public int inverse​(int a)
        compute the multiplicative inverse of a
        Parameters:
        a - a field element a
        Returns:
        a-1
      • sqRoot

        public int sqRoot​(int a)
        compute the square root of an integer
        Parameters:
        a - a field element a
        Returns:
        a1/2
      • getRandomElement

        public int getRandomElement​(SecureRandom sr)
        create a random field element using PRNG sr
        Parameters:
        sr - SecureRandom
        Returns:
        a random element
      • getRandomNonZeroElement

        public int getRandomNonZeroElement()
        create a random non-zero field element
        Returns:
        a random element
      • getRandomNonZeroElement

        public int getRandomNonZeroElement​(SecureRandom sr)
        create a random non-zero field element using PRNG sr
        Parameters:
        sr - SecureRandom
        Returns:
        a random non-zero element
      • isElementOfThisField

        public boolean isElementOfThisField​(int e)
        Returns:
        true if e is encoded element of this field and false otherwise
      • elementToStr

        public String elementToStr​(int a)
      • equals

        public boolean equals​(Object other)
        checks if given object is equal to this field.

        The method returns false whenever the given object is not GF2m.

        Overrides:
        equals in class Object
        Parameters:
        other - object
        Returns:
        true or false
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • toString

        public String toString()
        Returns a human readable form of this field.
        Overrides:
        toString in class Object
        Returns:
        a human readable form of this field.