OpenSSL密码库算法笔记——第5.4.8章 椭圆曲线点的仿射系数

设置仿射系数其实和设置射影系数非常类似,只不过需要将Z坐标设置为1,即设置射影坐标EC_POINT_set_Jprojective_coordinates_GFp(group, point, x, y, BN_value_one())

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

int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *point,const BIGNUM *x, const BIGNUM *y)

功能:     设置仿射点坐标

输入:     groupxy

输出:     point

返回:     1【正常】or 0【出错】

出处:     ec_lib.c

调用:        int ec_GFp_simple_point_set_affine_coordinates(const EC_GROUP *group, EC_POINT *point,const BIGNUM *x, const BIGNUM *y)

备注:     即设置射影坐标时让 z 1

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

        由于在点的存储中采用的是射影坐标形式,所以要想获得仿射坐标,需要做必要的转换:射影点(x, y, z),z≠0,对应仿射点(x/z2, y/z3)。

注意:与获取射影系数时一样,读取X、Y、Z坐标得根据方法集meth 对编码函数ec_GFp_mont_field_encode和解码函数ec_GFp_mont_field_decode的定义来决定到底采用哪种形式。

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

int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *point,BIGNUM *x, BIGNUM *y)

功能:    读取仿射点坐标

输入:    grouppoint

输出:    xy

返回:    1【正常】or 0【出错】

出处:    ec_lib.c

调用:        int ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *point,BIGNUM *x, BIGNUM *y)

备注:    由于点的存储采用的是射影点形式,所以需将射影点转化成仿射点后输出

                       (X, Y, Z)  转化成点  (x, y) := (X/Z2, Y/Z3)

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

猜你喜欢

转载自blog.csdn.net/samsho2/article/details/88102516
今日推荐