私は楕円曲線を離散logrithm問題を解くことを試みています。目標の楕円曲線は2進数のフィールドF2^113で定義されているので、私はプログラムで多量のEC_POINT_add演算を行う必要があります。残念ながら、EC_POINT_addは常に約7x(10^7)回のループの後に0を返し、プログラムを停止します。私のテストコードはここにありますが、なぜEC_POINT_addが常に0を返し、約7x(10^7)ループの後にプログラムが停止するのか、私は非常に混乱しています。私は本当にあなたの助けが必要です。なぜなら、この問題は一週間を私に混乱させたからです。ありがとうございました!openssl楕円曲線:EC_POINT_add戻り値のエラー
/*X1 is a elliptic point, Tx,Ty,BL,c1,d1,c[i],d[i] and R[i] are BIGNUM* */
while(1) {
if(1 != EC_POINT_get_affine_coordinates_GF2m(curve,X1,Tx,Ty,ctx)) return 0;
BN_mod(Tx,Tx,BL,ctx);
i = atoi(BN_bn2dec(Tx));
if(1 != EC_POINT_add(curve,X1,X1,R[i],ctx)) {
printf("\nb\n");
return 0;
}
BN_mod_add(c1,c1,c[i],order,ctx);
BN_mod_add(d1,d1,d[i],order,ctx);
k++;
printf("%d ",k);
}
私はそれが流れの上にスタックかもしれないと思うが、私はそれに対処する方法を知らない。 – ybshen