Class GF2nField

  • Direct Known Subclasses:
    GF2nONBField, GF2nPolynomialField

    public abstract class GF2nField
    extends java.lang.Object
    This abstract class defines the finite field GF(2n). It holds the extension degree n, the characteristic, the irreducible fieldpolynomial and conversion matrices. GF2nField is implemented by the classes GF2nPolynomialField and GF2nONBField.
    See Also:
    GF2nONBField, GF2nPolynomialField
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected GF2Polynomial fieldPolynomial
      the irreducible fieldPolynomial stored in normal order (also for ONB)
      protected java.util.Vector fields
      holds a list of GF2nFields to which elements have been converted and thus a COB-Matrix exists
      protected java.util.Vector matrices
      the COB matrices
      protected int mDegree
      the degree of this field
      protected java.security.SecureRandom random  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected GF2nField​(java.security.SecureRandom random)  
    • Field Detail

      • random

        protected final java.security.SecureRandom random
      • mDegree

        protected int mDegree
        the degree of this field
      • fieldPolynomial

        protected GF2Polynomial fieldPolynomial
        the irreducible fieldPolynomial stored in normal order (also for ONB)
      • fields

        protected java.util.Vector fields
        holds a list of GF2nFields to which elements have been converted and thus a COB-Matrix exists
      • matrices

        protected java.util.Vector matrices
        the COB matrices
    • Constructor Detail

      • GF2nField

        protected GF2nField​(java.security.SecureRandom random)
    • Method Detail

      • getDegree

        public final int getDegree()
        Returns the degree n of this field.
        Returns:
        the degree n of this field
      • getFieldPolynomial

        public final GF2Polynomial getFieldPolynomial()
        Returns the fieldpolynomial as a new Bitstring.
        Returns:
        a copy of the fieldpolynomial as a new Bitstring
      • equals

        public final boolean equals​(java.lang.Object other)
        Decides whether the given object other is the same as this field.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        other - another object
        Returns:
        (this == other)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the hash code of this field
      • getRandomRoot

        protected abstract GF2nElement getRandomRoot​(GF2Polynomial B0FieldPolynomial)
        Computes a random root from the given irreducible fieldpolynomial according to IEEE 1363 algorithm A.5.6. This cal take very long for big degrees.
        Parameters:
        B0FieldPolynomial - the fieldpolynomial if the other basis as a Bitstring
        Returns:
        a random root of BOFieldPolynomial in representation according to this field
        See Also:
        "P1363 A.5.6, p103f"
      • computeCOBMatrix

        protected abstract void computeCOBMatrix​(GF2nField B1)
        Computes the change-of-basis matrix for basis conversion according to 1363. The result is stored in the lists fields and matrices.
        Parameters:
        B1 - the GF2nField to convert to
        See Also:
        "P1363 A.7.3, p111ff"
      • computeFieldPolynomial

        protected abstract void computeFieldPolynomial()
        Computes the fieldpolynomial. This can take a long time for big degrees.
      • invertMatrix

        protected final GF2Polynomial[] invertMatrix​(GF2Polynomial[] matrix)
        Inverts the given matrix represented as bitstrings.
        Parameters:
        matrix - the matrix to invert as a Bitstring[]
        Returns:
        matrix^(-1)