📄 montgomeryparams.java
字号:
MaxUInt;
Prod4 = (Pr = (Pr >> 32) + Prod4 - TestNbr4) &
MaxUInt;
Prod5 = ( (Pr >> 32) + Prod5 - TestNbr5) &
MaxUInt;
}
Prod[0] = Prod0;
Prod[1] = Prod1;
Prod[2] = Prod2;
Prod[3] = Prod3;
Prod[4] = Prod4;
Prod[5] = Prod5;
break;
case 7:
Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 =
0;
TestNbr2 = TestNbr[2];
TestNbr3 = TestNbr[3];
TestNbr4 = TestNbr[4];
TestNbr5 = TestNbr[5];
TestNbr6 = TestNbr[6];
Nbr2_2 = Nbr2[2];
Nbr2_3 = Nbr2[3];
Nbr2_4 = Nbr2[4];
Nbr2_5 = Nbr2[5];
Nbr2_6 = Nbr2[6];
i = 0;
do {
ProdB0 = (Nbr = Nbr1[i]) * Nbr2_0 + Prod0;
MontDig = ( (int) ProdB0 * montyMultN) &
MaxUInt;
Prd = (ProdB0 >>> 32) + Nbr * Nbr2_1 + Prod1;
Prod0 = (Pr =
( (MontDig * TestNbr0 + MaxUInt) >>> 32) +
MontDig * TestNbr1 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_2 + Prod2;
Prod1 = (Pr = (Pr >>> 32) + MontDig * TestNbr2 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_3 + Prod3;
Prod2 = (Pr = (Pr >>> 32) + MontDig * TestNbr3 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_4 + Prod4;
Prod3 = (Pr = (Pr >>> 32) + MontDig * TestNbr4 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_5 + Prod5;
Prod4 = (Pr = (Pr >>> 32) + MontDig * TestNbr5 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_6 + Prod6;
Prod5 = (Pr = (Pr >>> 32) + MontDig * TestNbr6 +
(Prd & MaxUInt)) & MaxUInt;
Prod6 = (Prd >>> 32) + (Pr >>> 32);
i++;
}
while (i < 7);
if (Prod6 > TestNbr6 || Prod6 == TestNbr6 &&
(Prod5 > TestNbr5 || Prod5 == TestNbr5 &&
(Prod4 > TestNbr4 || Prod4 == TestNbr4 &&
(Prod3 > TestNbr3 || Prod3 == TestNbr3 &&
(Prod2 > TestNbr2 || Prod2 == TestNbr2 &&
(Prod1 > TestNbr1 || Prod1 == TestNbr1 &&
(Prod0 >= TestNbr0))))))) {
Prod0 = (Pr = Prod0 - TestNbr0) & MaxUInt;
Prod1 = (Pr = (Pr >> 32) + Prod1 - TestNbr1) &
MaxUInt;
Prod2 = (Pr = (Pr >> 32) + Prod2 - TestNbr2) &
MaxUInt;
Prod3 = (Pr = (Pr >> 32) + Prod3 - TestNbr3) &
MaxUInt;
Prod4 = (Pr = (Pr >> 32) + Prod4 - TestNbr4) &
MaxUInt;
Prod5 = (Pr = (Pr >> 32) + Prod5 - TestNbr5) &
MaxUInt;
Prod6 = ( (Pr >> 32) + Prod6 - TestNbr6) &
MaxUInt;
}
Prod[0] = Prod0;
Prod[1] = Prod1;
Prod[2] = Prod2;
Prod[3] = Prod3;
Prod[4] = Prod4;
Prod[5] = Prod5;
Prod[6] = Prod6;
break;
case 8:
Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 =
Prod7 = 0;
TestNbr2 = TestNbr[2];
TestNbr3 = TestNbr[3];
TestNbr4 = TestNbr[4];
TestNbr5 = TestNbr[5];
TestNbr6 = TestNbr[6];
TestNbr7 = TestNbr[7];
Nbr2_2 = Nbr2[2];
Nbr2_3 = Nbr2[3];
Nbr2_4 = Nbr2[4];
Nbr2_5 = Nbr2[5];
Nbr2_6 = Nbr2[6];
Nbr2_7 = Nbr2[7];
i = 0;
do {
ProdB0 = (Nbr = Nbr1[i]) * Nbr2_0 + Prod0;
MontDig = ( (int) ProdB0 * montyMultN) &
MaxUInt;
Prd = (ProdB0 >>> 32) + Nbr * Nbr2_1 + Prod1;
Prod0 = (Pr =
( (MontDig * TestNbr0 + MaxUInt) >>> 32) +
MontDig * TestNbr1 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_2 + Prod2;
Prod1 = (Pr = (Pr >>> 32) + MontDig * TestNbr2 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_3 + Prod3;
Prod2 = (Pr = (Pr >>> 32) + MontDig * TestNbr3 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_4 + Prod4;
Prod3 = (Pr = (Pr >>> 32) + MontDig * TestNbr4 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_5 + Prod5;
Prod4 = (Pr = (Pr >>> 32) + MontDig * TestNbr5 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_6 + Prod6;
Prod5 = (Pr = (Pr >>> 32) + MontDig * TestNbr6 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_7 + Prod7;
Prod6 = (Pr = (Pr >>> 32) + MontDig * TestNbr7 +
(Prd & MaxUInt)) & MaxUInt;
Prod7 = (Prd >>> 32) + (Pr >>> 32);
i++;
}
while (i < 8);
if (Prod7 > TestNbr7 || Prod7 == TestNbr7 &&
(Prod6 > TestNbr6 || Prod6 == TestNbr6 &&
(Prod5 > TestNbr5 || Prod5 == TestNbr5 &&
(Prod4 > TestNbr4 || Prod4 == TestNbr4 &&
(Prod3 > TestNbr3 || Prod3 == TestNbr3 &&
(Prod2 > TestNbr2 || Prod2 == TestNbr2 &&
(Prod1 > TestNbr1 || Prod1 == TestNbr1 &&
(Prod0 >= TestNbr0)))))))) {
Prod0 = (Pr = Prod0 - TestNbr0) & MaxUInt;
Prod1 = (Pr = (Pr >> 32) + Prod1 - TestNbr1) &
MaxUInt;
Prod2 = (Pr = (Pr >> 32) + Prod2 - TestNbr2) &
MaxUInt;
Prod3 = (Pr = (Pr >> 32) + Prod3 - TestNbr3) &
MaxUInt;
Prod4 = (Pr = (Pr >> 32) + Prod4 - TestNbr4) &
MaxUInt;
Prod5 = (Pr = (Pr >> 32) + Prod5 - TestNbr5) &
MaxUInt;
Prod6 = (Pr = (Pr >> 32) + Prod6 - TestNbr6) &
MaxUInt;
Prod7 = ( (Pr >> 32) + Prod7 - TestNbr7) &
MaxUInt;
}
Prod[0] = Prod0;
Prod[1] = Prod1;
Prod[2] = Prod2;
Prod[3] = Prod3;
Prod[4] = Prod4;
Prod[5] = Prod5;
Prod[6] = Prod6;
Prod[7] = Prod7;
break;
case 9:
Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 =
Prod7 =
Prod8 = 0;
TestNbr2 = TestNbr[2];
TestNbr3 = TestNbr[3];
TestNbr4 = TestNbr[4];
TestNbr5 = TestNbr[5];
TestNbr6 = TestNbr[6];
TestNbr7 = TestNbr[7];
TestNbr8 = TestNbr[8];
Nbr2_2 = Nbr2[2];
Nbr2_3 = Nbr2[3];
Nbr2_4 = Nbr2[4];
Nbr2_5 = Nbr2[5];
Nbr2_6 = Nbr2[6];
Nbr2_7 = Nbr2[7];
Nbr2_8 = Nbr2[8];
i = 0;
do {
ProdB0 = (Nbr = Nbr1[i]) * Nbr2_0 + Prod0;
MontDig = ( (int) ProdB0 * montyMultN) &
MaxUInt;
Prd = (ProdB0 >>> 32) + Nbr * Nbr2_1 + Prod1;
Prod0 = (Pr =
( (MontDig * TestNbr0 + MaxUInt) >>> 32) +
MontDig * TestNbr1 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_2 + Prod2;
Prod1 = (Pr = (Pr >>> 32) + MontDig * TestNbr2 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_3 + Prod3;
Prod2 = (Pr = (Pr >>> 32) + MontDig * TestNbr3 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_4 + Prod4;
Prod3 = (Pr = (Pr >>> 32) + MontDig * TestNbr4 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_5 + Prod5;
Prod4 = (Pr = (Pr >>> 32) + MontDig * TestNbr5 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_6 + Prod6;
Prod5 = (Pr = (Pr >>> 32) + MontDig * TestNbr6 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_7 + Prod7;
Prod6 = (Pr = (Pr >>> 32) + MontDig * TestNbr7 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_8 + Prod8;
Prod7 = (Pr = (Pr >>> 32) + MontDig * TestNbr8 +
(Prd & MaxUInt)) & MaxUInt;
Prod8 = (Prd >>> 32) + (Pr >>> 32);
i++;
}
while (i < 9);
if (Prod8 > TestNbr8 || Prod8 == TestNbr8 &&
(Prod7 > TestNbr7 || Prod7 == TestNbr7 &&
(Prod6 > TestNbr6 || Prod6 == TestNbr6 &&
(Prod5 > TestNbr5 || Prod5 == TestNbr5 &&
(Prod4 > TestNbr4 || Prod4 == TestNbr4 &&
(Prod3 > TestNbr3 || Prod3 == TestNbr3 &&
(Prod2 > TestNbr2 || Prod2 == TestNbr2 &&
(Prod1 > TestNbr1 || Prod1 == TestNbr1 &&
(Prod0 >= TestNbr0))))))))) {
Prod0 = (Pr = Prod0 - TestNbr0) & MaxUInt;
Prod1 = (Pr = (Pr >> 32) + Prod1 - TestNbr1) &
MaxUInt;
Prod2 = (Pr = (Pr >> 32) + Prod2 - TestNbr2) &
MaxUInt;
Prod3 = (Pr = (Pr >> 32) + Prod3 - TestNbr3) &
MaxUInt;
Prod4 = (Pr = (Pr >> 32) + Prod4 - TestNbr4) &
MaxUInt;
Prod5 = (Pr = (Pr >> 32) + Prod5 - TestNbr5) &
MaxUInt;
Prod6 = (Pr = (Pr >> 32) + Prod6 - TestNbr6) &
MaxUInt;
Prod7 = (Pr = (Pr >> 32) + Prod7 - TestNbr7) &
MaxUInt;
Prod8 = ( (Pr >> 32) + Prod8 - TestNbr8) &
MaxUInt;
}
Prod[0] = Prod0;
Prod[1] = Prod1;
Prod[2] = Prod2;
Prod[3] = Prod3;
Prod[4] = Prod4;
Prod[5] = Prod5;
Prod[6] = Prod6;
Prod[7] = Prod7;
Prod[8] = Prod8;
break;
case 10:
Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 =
Prod7 =
Prod8 = Prod9 = 0;
TestNbr2 = TestNbr[2];
TestNbr3 = TestNbr[3];
TestNbr4 = TestNbr[4];
TestNbr5 = TestNbr[5];
TestNbr6 = TestNbr[6];
TestNbr7 = TestNbr[7];
TestNbr8 = TestNbr[8];
TestNbr9 = TestNbr[9];
Nbr2_2 = Nbr2[2];
Nbr2_3 = Nbr2[3];
Nbr2_4 = Nbr2[4];
Nbr2_5 = Nbr2[5];
Nbr2_6 = Nbr2[6];
Nbr2_7 = Nbr2[7];
Nbr2_8 = Nbr2[8];
Nbr2_9 = Nbr2[9];
i = 0;
do {
ProdB0 = (Nbr = Nbr1[i]) * Nbr2_0 + Prod0;
MontDig = ( (int) ProdB0 * montyMultN) &
MaxUInt;
Prd = (ProdB0 >>> 32) + Nbr * Nbr2_1 + Prod1;
Prod0 = (Pr =
( (MontDig * TestNbr0 + MaxUInt) >>> 32) +
MontDig * TestNbr1 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_2 + Prod2;
Prod1 = (Pr = (Pr >>> 32) + MontDig * TestNbr2 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_3 + Prod3;
Prod2 = (Pr = (Pr >>> 32) + MontDig * TestNbr3 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_4 + Prod4;
Prod3 = (Pr = (Pr >>> 32) + MontDig * TestNbr4 +
(Prd & MaxUInt)) & MaxUInt;
Prd = (Prd >>> 32) + Nbr * Nbr2_5 + Prod5;
Prod4 = (Pr = (Pr >>> 32) + MontDig * TestNbr5 +
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -