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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值