判断一个点在曲线上的理论依据是什么呢?前面已经说了,素域Fp上的椭圆曲线E由(仿射)方程y2=x3+ax+b决定,所以Jacobi射影点P=(X,Y,Z)在不在曲线上就看这个点是不是满足射影方程y2=x3+axz4+bz6。带入P点分别计算方程左右两边再做比较即可。
同样地,如果P点的Z分量为1,计算量就可以大大降低,这就是在点的定义中加入参数Z_is_one的好处。
下面来解释判断点是否在曲线上的函数。
───────────────────────────────────────
int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point)
功能: 判断点是否在曲线上
输入: group,point
输出: -
返回: 1【在曲线上】 or 0【不在曲线上】 or -1【出错】
出处: ec_lib.c
调用: ▼ int ec_GFp_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point)
───────────────────────────────────────