Bouncy Castle Cryptography Library 1.79

org.bouncycastle.pqc.legacy.math.linearalgebra
Class GF2mField

java.lang.Object
  |
  +--org.bouncycastle.pqc.legacy.math.linearalgebra.GF2mField

public class GF2mField
extends java.lang.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 Summary
GF2mField(byte[] enc)
           
GF2mField(GF2mField field)
           
GF2mField(int degree)
          create a finite field GF(2^m)
GF2mField(int degree, int poly)
          create a finite field GF(2^m) with the fixed field polynomial
 
Method Summary
 int add(int a, int b)
          Return sum of two elements
 java.lang.String elementToStr(int a)
           
 boolean equals(java.lang.Object other)
          checks if given object is equal to this field.
 int exp(int a, int k)
          compute exponentiation a^k
 int getDegree()
          return degree of the field
 byte[] getEncoded()
          return the encoded form of this field
 int getPolynomial()
          return the field polynomial
 int getRandomElement(java.security.SecureRandom sr)
          create a random field element using PRNG sr
 int getRandomNonZeroElement()
          create a random non-zero field element
 int getRandomNonZeroElement(java.security.SecureRandom sr)
          create a random non-zero field element using PRNG sr
 int hashCode()
           
 int inverse(int a)
          compute the multiplicative inverse of a
 boolean isElementOfThisField(int e)
           
 int mult(int a, int b)
          Return product of two elements
 int sqRoot(int a)
          compute the square root of an integer
 java.lang.String toString()
          Returns a human readable form of this field.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

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:
a 1/2

getRandomElement

public int getRandomElement(java.security.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(java.security.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 java.lang.String elementToStr(int a)

equals

public boolean equals(java.lang.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 java.lang.Object
Parameters:
other - object
Returns:
true or false

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

toString

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

Bouncy Castle Cryptography Library 1.79