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);
}
我想很簡單,就目前而言,但這個想法是讓非常大的數目的乘積像