OpenSSL密码库算法笔记——第5.4.5章 椭圆曲线点在曲线上的判断

判断一个点在曲线上的理论依据是什么呢?前面已经说了,素域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)

功能:    判断点是否在曲线上

输入:    grouppoint

输出:   

返回:    1【在曲线上】 or 0【不在曲线上】 or 1【出错】

出处:    ec_lib.c

调用:        int ec_GFp_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point)

───────────────────────────────────────

你可能感兴趣的:(openssl)