0
我试图解决椭圆曲线离散对数问题,在c中使用Pollard rho攻击。由于目标椭圆曲线是在二进制字段F2^113上定义的,因此我需要在我的程序中执行大量的EC_POINT_add操作。不幸的是,EC_POINT_add总是返回0,程序在大约7x(10^7)循环后停止。这里是我的测试代码,我非常困惑,为什么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