//整体取逆元 //逆元生成 UINT32 galois_inverse(UINT32 y,UINT32 w)//逆元生成 { if(y==0) return FALSE; //开始查表计算逆元 if(mult_type[w]==SHIFT||mult_type[w]==SPLITW8) return galois_shift_inverse(y,w);//直接移位求倒数 return galois_single_divide(1,y,w); }
//shift除法 UINT32 galois_shift_divide(UINT32 x,UINT32 y,UINT32 w)//shift除法 { UINT32 inverse;//逆元 if(y==0) return FALSE; if(x==0) return 0; inverse=galois_shift_inverse(y,w); return galois_shift_multiply(x,inverse,w); }
/* * Class: eu_vandertil_jerasure_jni_Galois * Method: galois_shift_inverse * Signature: (II)I */ JNIEXPORT jint JNICALL Java_eu_vandertil_jerasure_jni_Galois_galois_1shift_1inverse (JNIEnv *env, jclass clazz, jint y, jint w) { return galois_shift_inverse(y, w); }