本文整理汇总了Java中org.bouncycastle.pqc.crypto.rainbow.util.GF2Field.MASK属性的典型用法代码示例。如果您正苦于以下问题:Java GF2Field.MASK属性的具体用法?Java GF2Field.MASK怎么用?Java GF2Field.MASK使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类org.bouncycastle.pqc.crypto.rainbow.util.GF2Field
的用法示例。
在下文中一共展示了GF2Field.MASK属性的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: initSign
/**
* initial operations before solving the Linear equation system.
*
* @param layer the current layer for which a LES is to be solved.
* @param msg the message that should be signed.
* @return Y_ the modified document needed for solving LES, (Y_ =
* A1^{-1}*(Y-b1)) linear map L1 = A1 x + b1.
*/
private short[] initSign(Layer[] layer, short[] msg)
{
/* preparation: Modifies the document with the inverse of L1 */
// tmp = Y - b1:
short[] tmpVec = new short[msg.length];
tmpVec = cf.addVect(((RainbowPrivateKeyParameters)this.key).getB1(), msg);
// Y_ = A1^{-1} * (Y - b1) :
short[] Y_ = cf.multiplyMatrix(((RainbowPrivateKeyParameters)this.key).getInvA1(), tmpVec);
/* generates the vinegar vars of the first layer at random */
for (int i = 0; i < layer[0].getVi(); i++)
{
x[i] = (short)random.nextInt();
x[i] = (short)(x[i] & GF2Field.MASK);
}
return Y_;
}
示例2: generateL1
/**
* This function generates the invertible affine linear map L1 = A1*x + b1
* <p/>
* The translation part b1, is stored in a separate array. The inverse of
* the matrix-part of L1 A1inv is also computed here.
* <p/>
* This linear map hides the output of the map F. It is on k^(n-v1).
*/
private void generateL1()
{
// dimension = n-v1 = vi[last] - vi[first]
int dim = vi[vi.length - 1] - vi[0];
this.A1 = new short[dim][dim];
this.A1inv = null;
ComputeInField c = new ComputeInField();
/* generation of A1 at random */
while (A1inv == null)
{
for (int i = 0; i < dim; i++)
{
for (int j = 0; j < dim; j++)
{
A1[i][j] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
A1inv = c.inverse(A1);
}
/* generation of the translation vector at random */
b1 = new short[dim];
for (int i = 0; i < dim; i++)
{
b1[i] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
示例3: generateL2
/**
* This function generates the invertible affine linear map L2 = A2*x + b2
* <p/>
* The translation part b2, is stored in a separate array. The inverse of
* the matrix-part of L2 A2inv is also computed here.
* <p/>
* This linear map hides the output of the map F. It is on k^(n).
*/
private void generateL2()
{
// dimension = n = vi[last]
int dim = vi[vi.length - 1];
this.A2 = new short[dim][dim];
this.A2inv = null;
ComputeInField c = new ComputeInField();
/* generation of A2 at random */
while (this.A2inv == null)
{
for (int i = 0; i < dim; i++)
{
for (int j = 0; j < dim; j++)
{ // one col extra for b
A2[i][j] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
this.A2inv = c.inverse(A2);
}
/* generation of the translation vector at random */
b2 = new short[dim];
for (int i = 0; i < dim; i++)
{
b2[i] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
示例4: generateL1
/**
* This function generates the invertible affine linear map L1 = A1*x + b1
* <p>
* The translation part b1, is stored in a separate array. The inverse of
* the matrix-part of L1 A1inv is also computed here.
* </p><p>
* This linear map hides the output of the map F. It is on k^(n-v1).
* </p>
*/
private void generateL1()
{
// dimension = n-v1 = vi[last] - vi[first]
int dim = vi[vi.length - 1] - vi[0];
this.A1 = new short[dim][dim];
this.A1inv = null;
ComputeInField c = new ComputeInField();
/* generation of A1 at random */
while (A1inv == null)
{
for (int i = 0; i < dim; i++)
{
for (int j = 0; j < dim; j++)
{
A1[i][j] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
A1inv = c.inverse(A1);
}
/* generation of the translation vector at random */
b1 = new short[dim];
for (int i = 0; i < dim; i++)
{
b1[i] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
示例5: generateL2
/**
* This function generates the invertible affine linear map L2 = A2*x + b2
* <p>
* The translation part b2, is stored in a separate array. The inverse of
* the matrix-part of L2 A2inv is also computed here.
* </p><p>
* This linear map hides the output of the map F. It is on k^(n).
* </p>
*/
private void generateL2()
{
// dimension = n = vi[last]
int dim = vi[vi.length - 1];
this.A2 = new short[dim][dim];
this.A2inv = null;
ComputeInField c = new ComputeInField();
/* generation of A2 at random */
while (this.A2inv == null)
{
for (int i = 0; i < dim; i++)
{
for (int j = 0; j < dim; j++)
{ // one col extra for b
A2[i][j] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
this.A2inv = c.inverse(A2);
}
/* generation of the translation vector at random */
b2 = new short[dim];
for (int i = 0; i < dim; i++)
{
b2[i] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
示例6: Layer
/**
* This function generates the coefficients of all polynomials in this layer
* at random using random generator.
*
* @param sr the random generator which is to be used
*/
public Layer(int vi, int viNext, SecureRandom sr)
{
this.vi = vi;
this.viNext = viNext;
this.oi = viNext - vi;
// the coefficients of all polynomials in this layer
this.coeff_alpha = new short[this.oi][this.oi][this.vi];
this.coeff_beta = new short[this.oi][this.vi][this.vi];
this.coeff_gamma = new short[this.oi][this.viNext];
this.coeff_eta = new short[this.oi];
int numOfPoly = this.oi; // number of polynomials per layer
// Alpha coeffs
for (int k = 0; k < numOfPoly; k++)
{
for (int i = 0; i < this.oi; i++)
{
for (int j = 0; j < this.vi; j++)
{
coeff_alpha[k][i][j] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
}
// Beta coeffs
for (int k = 0; k < numOfPoly; k++)
{
for (int i = 0; i < this.vi; i++)
{
for (int j = 0; j < this.vi; j++)
{
coeff_beta[k][i][j] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
}
// Gamma coeffs
for (int k = 0; k < numOfPoly; k++)
{
for (int i = 0; i < this.viNext; i++)
{
coeff_gamma[k][i] = (short)(sr.nextInt() & GF2Field.MASK);
}
}
// Eta
for (int k = 0; k < numOfPoly; k++)
{
coeff_eta[k] = (short)(sr.nextInt() & GF2Field.MASK);
}
}