Class GF2nONBElement

  • All Implemented Interfaces:
    GFElement

    public class GF2nONBElement
    extends GF2nElement
    This class implements an element of the finite field GF(2n ). It is represented in an optimal normal basis representation and holds the pointer mField to its corresponding field.
    See Also:
    GF2nField, GF2nElement
    • Constructor Detail

      • GF2nONBElement

        public GF2nONBElement​(GF2nONBField gf2n,
                              java.security.SecureRandom rand)
        Construct a random element over the field gf2n, using the specified source of randomness.
        Parameters:
        gf2n - the field
        rand - the source of randomness
      • GF2nONBElement

        public GF2nONBElement​(GF2nONBField gf2n,
                              byte[] e)
        Construct a new GF2nONBElement from its encoding.
        Parameters:
        gf2n - the field
        e - the encoded element
      • GF2nONBElement

        public GF2nONBElement​(GF2nONBField gf2n,
                              java.math.BigInteger val)
        Construct the element of the field gf2n with the specified value val.
        Parameters:
        gf2n - the field
        val - the value represented by a BigInteger
      • GF2nONBElement

        public GF2nONBElement​(GF2nONBElement gf2n)
        Copy constructor.
        Parameters:
        gf2n - the field
    • Method Detail

      • clone

        public java.lang.Object clone()
        Create a new GF2nONBElement by cloning this GF2nPolynomialElement.
        Specified by:
        clone in interface GFElement
        Specified by:
        clone in class GF2nElement
        Returns:
        a copy of this element
      • ZERO

        public static GF2nONBElement ZERO​(GF2nONBField gf2n)
        Create the zero element.
        Parameters:
        gf2n - the finite field
        Returns:
        the zero element in the given finite field
      • ONE

        public static GF2nONBElement ONE​(GF2nONBField gf2n)
        Create the one element.
        Parameters:
        gf2n - the finite field
        Returns:
        the one element in the given finite field
      • isZero

        public boolean isZero()
        Checks whether this element is zero.
        Returns:
        true if this is the zero element
      • isOne

        public boolean isOne()
        Checks whether this element is one.
        Returns:
        true if this is the one element
      • equals

        public boolean equals​(java.lang.Object other)
        Compare this element with another object.
        Specified by:
        equals in interface GFElement
        Overrides:
        equals in class java.lang.Object
        Parameters:
        other - the other object
        Returns:
        true if the two objects are equal, false otherwise
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface GFElement
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the hash code of this element
      • testRightmostBit

        public boolean testRightmostBit()
        Returns whether the highest bit of the bit representation is set
        Specified by:
        testRightmostBit in class GF2nElement
        Returns:
        true, if the highest bit of mPol is set, false, otherwise
      • add

        public GFElement add​(GFElement addend)
                      throws java.lang.RuntimeException
        Compute the sum of this element and addend.
        Parameters:
        addend - the addend
        Returns:
        this + other (newly created)
        Throws:
        java.lang.RuntimeException
      • addToThis

        public void addToThis​(GFElement addend)
                       throws java.lang.RuntimeException
        Compute this + addend (overwrite this).
        Parameters:
        addend - the addend
        Throws:
        java.lang.RuntimeException
      • increaseThis

        public void increaseThis()
        increases this element.
        Specified by:
        increaseThis in class GF2nElement
      • multiply

        public GFElement multiply​(GFElement factor)
                           throws java.lang.RuntimeException
        Compute the product of this element and factor.
        Parameters:
        factor - the factor
        Returns:
        this * factor (newly created)
        Throws:
        java.lang.RuntimeException
      • multiplyThisBy

        public void multiplyThisBy​(GFElement factor)
                            throws java.lang.RuntimeException
        Compute this * factor (overwrite this).
        Parameters:
        factor - the factor
        Throws:
        java.lang.RuntimeException
      • squareThis

        public void squareThis()
        squares this element.
        Specified by:
        squareThis in class GF2nElement
      • invert

        public GFElement invert()
                         throws java.lang.ArithmeticException
        Compute the multiplicative inverse of this element.
        Returns:
        this-1 (newly created)
        Throws:
        java.lang.ArithmeticException - if this is the zero element.
      • invertThis

        public void invertThis()
                        throws java.lang.ArithmeticException
        Multiplicatively invert of this element (overwrite this).
        Throws:
        java.lang.ArithmeticException - if this is the zero element.
      • squareRootThis

        public void squareRootThis()
        square roots this element.
        Specified by:
        squareRootThis in class GF2nElement
      • trace

        public int trace()
        Returns the trace of this element.
        Specified by:
        trace in class GF2nElement
        Returns:
        the trace of this element
      • solveQuadraticEquation

        public GF2nElement solveQuadraticEquation()
                                           throws java.lang.RuntimeException
        Solves a quadratic equation.
        Let z2 + z = this. Then this method returns z.
        Specified by:
        solveQuadraticEquation in class GF2nElement
        Returns:
        z with z2 + z = this
        Throws:
        java.lang.RuntimeException
      • toString

        public java.lang.String toString()
        Returns a String representation of this element.
        Specified by:
        toString in interface GFElement
        Overrides:
        toString in class java.lang.Object
        Returns:
        String representation of this element with the specified radix
      • toString

        public java.lang.String toString​(int radix)
        Returns a String representation of this element. radix specifies the radix of the String representation.
        NOTE: ONLY radix = 2 or radix = 16 IS IMPLEMENTED
        Parameters:
        radix - specifies the radix of the String representation
        Returns:
        String representation of this element with the specified radix
      • toFlexiBigInt

        public java.math.BigInteger toFlexiBigInt()
        Returns this element as FlexiBigInt. The conversion is P1363-conform.
        Returns:
        this element as BigInteger
      • toByteArray

        public byte[] toByteArray()
        Returns this element as byte array. The conversion is P1363-conform.
        Returns:
        this element as byte array