0
我正在将JavaCard中的软件开发为ECC中的附加点。 问题是我需要一些基础操作,所以目前,我需要乘法和倒置,我已经有了加法和减法。乘法
我试图发展蒙哥马利乘法,但它是GF(2^m)(我认为)。
所以我的例子是:
public static void multiplicationGF_p2(){
byte A = (byte) 7;
byte p = (byte) 5;
byte B = (byte) 2;
byte C = (byte) 0;
byte n = (byte)8;
byte i = (byte)(n - 1);
for(; i >= 0; i--){
C = (byte)(((C & 0xFF) + (C & 0xFF)) + ((A & 0xff) << getBytePos(B,i)));
if((C & 0xFF) >= (byte)(p & 0xFF)){
C = (byte) ((C & 0xFF)-(p & 0xFF));
}
if((C & 0xFF) >= (byte)(p & 0xFF)){
C = (byte) ((C & 0xFF)-(p & 0xFF));
}
}
}
例如A = 2,B = 3,P = 3 c必须是0,C = A. B(模式P) 但这例如A = 7,B = 2,P = 5,C必须是4,但我有49.
有人可以帮助我吗?
更多的方法:
public static byte getBytePos(byte b, byte pos){
return (byte)(((b & 0xff) >> pos) & 1);
}
我想很简单,就目前而言,但这个想法是让非常大的数目的乘积像