Class GF2Vector
java.lang.Object
org.bouncycastle.pqc.legacy.math.linearalgebra.Vector
org.bouncycastle.pqc.legacy.math.linearalgebra.GF2Vector
This class implements the abstract class Vector for the case of
vectors over the finite field GF(2).
For the vector representation the array of type int[] is used, thus one element of the array holds 32 elements of the vector.
For the vector representation the array of type int[] is used, thus one element of the array holds 32 elements of the vector.
- See Also:
-
Field Summary
-
Constructor Summary
ConstructorsModifierConstructorDescriptionGF2Vector
(int length) Construct the zero vector of the given length.protected
GF2Vector
(int[] v, int length) Construct a newGF2Vector
of the given length and with the given element array.GF2Vector
(int length, int[] v) Construct a GF2Vector of the given length and with elements from the given array.GF2Vector
(int length, int t, SecureRandom sr) Construct a random GF2Vector of the given length with the specified number of non-zero coefficients.GF2Vector
(int length, SecureRandom sr) Construct a random GF2Vector of the given length.Copy constructor. -
Method Summary
Modifier and TypeMethodDescriptionAdds another GF2Vector to this vector.boolean
Check if the given object is equal to this vector.extractLeftVector
(int k) Return a new vector consisting of the first k elements of this vector.extractRightVector
(int k) Return a new vector consisting of the last k elements of this vector.extractVector
(int[] setJ) Return a new vector consisting of the elements of this vector with the indices given by the set setJ.int
getBit
(int index) Return the value of the bit of this vector at the specified index.byte[]
Encode this vector as byte array.int
Return the Hamming weight of this vector, i.e., compute the number of units of this vector.int[]
int
hashCode()
boolean
isZero()
Return whether this is the zero vector (i.e., all elements are zero).Multiply this vector with a permutation.static GF2Vector
OS2VP
(int length, byte[] encVec) Construct a new GF2Vector with the given length out of the encoded vector.void
setBit
(int index) Set the coefficient at the given index to 1.toExtensionFieldVector
(GF2mField field) Rewrite this vector as a vector over GF(2m) with t elements.toString()
-
Constructor Details
-
GF2Vector
public GF2Vector(int length) Construct the zero vector of the given length.- Parameters:
length
- the length of the vector
-
GF2Vector
Construct a random GF2Vector of the given length.- Parameters:
length
- the length of the vectorsr
- the source of randomness
-
GF2Vector
Construct a random GF2Vector of the given length with the specified number of non-zero coefficients.- Parameters:
length
- the length of the vectort
- the number of non-zero coefficientssr
- the source of randomness
-
GF2Vector
public GF2Vector(int length, int[] v) Construct a GF2Vector of the given length and with elements from the given array. The array is copied and unused bits are masked out.- Parameters:
length
- the length of the vectorv
- the element array
-
GF2Vector
Copy constructor.- Parameters:
other
- anotherGF2Vector
-
GF2Vector
protected GF2Vector(int[] v, int length) Construct a newGF2Vector
of the given length and with the given element array. The array is not changed and only a reference to the array is stored. No length checking is performed either.- Parameters:
v
- the element arraylength
- the length of the vector
-
-
Method Details
-
OS2VP
Construct a new GF2Vector with the given length out of the encoded vector.- Parameters:
length
- the length of the vectorencVec
- the encoded vector- Returns:
- the decoded vector
-
getEncoded
public byte[] getEncoded()Encode this vector as byte array.- Specified by:
getEncoded
in classVector
- Returns:
- the encoded vector
-
getVecArray
public int[] getVecArray()- Returns:
- the int array representation of this vector
-
getHammingWeight
public int getHammingWeight()Return the Hamming weight of this vector, i.e., compute the number of units of this vector.- Returns:
- the Hamming weight of this vector
-
isZero
public boolean isZero()Description copied from class:Vector
Return whether this is the zero vector (i.e., all elements are zero). -
getBit
public int getBit(int index) Return the value of the bit of this vector at the specified index.- Parameters:
index
- the index- Returns:
- the value of the bit (0 or 1)
-
setBit
public void setBit(int index) Set the coefficient at the given index to 1. If the index is out of bounds, do nothing.- Parameters:
index
- the index of the coefficient to set
-
add
Adds another GF2Vector to this vector.- Specified by:
add
in classVector
- Parameters:
other
- another GF2Vector- Returns:
- this + other
- Throws:
ArithmeticException
- if the other vector is not a GF2Vector or has another length.
-
multiply
Multiply this vector with a permutation. -
extractVector
Return a new vector consisting of the elements of this vector with the indices given by the set setJ.- Parameters:
setJ
- the set of indices of elements to extract- Returns:
- the new
GF2Vector
[this_setJ[0], this_setJ[1], ..., this_setJ[#setJ-1]]
-
extractLeftVector
Return a new vector consisting of the first k elements of this vector.- Parameters:
k
- the number of elements to extract- Returns:
- a new
GF2Vector
consisting of the first k elements of this vector
-
extractRightVector
Return a new vector consisting of the last k elements of this vector.- Parameters:
k
- the number of elements to extract- Returns:
- a new
GF2Vector
consisting of the last k elements of this vector
-
toExtensionFieldVector
Rewrite this vector as a vector over GF(2m) with t elements.- Parameters:
field
- the finite field GF(2m)- Returns:
- the converted vector over GF(2m)
-
equals
Check if the given object is equal to this vector. -
hashCode
public int hashCode() -
toString
-