Ich entwickle Software in JavaCard zu Additionspunkten in ECC. das Problem ist, ich brauche einige Basisoperationen, so für den Moment, ich brauche Multiplikation und Inversion, ich habe bereits Addition und Subtraktion.Multiplikation in GF (p)
Ich habe versucht, Montgomery Multiplikation zu entwickeln, aber es ist für GF (2^m) (glaube ich).
so Mein Beispiel ist:
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));
}
}
}
beispielsweise A = 2, B = 3, p = 3 sein muß, C 0, C = A. B (mode p) dies aber Beispiel A = 7, B = 2, p = 5, C muss 4 sein, aber ich habe 49.
kann mir jemand dabei helfen?
mehr Methoden:
public static byte getBytePos(byte b, byte pos){
return (byte)(((b & 0xff) >> pos) & 1);
}
Ich versuche, einfach zu sein, für den Moment, aber die Idee ist die Multiplikation von sehr großer Zahl wie Arrays macht [10] von Bytes