OpenSSL密码库算法笔记——第5.3.4章 椭圆曲线点群的补充说明

本文详细解析了椭圆曲线密码学中大整数与Montgomery整数之间的转换过程,介绍了ec_GFp_mont_field_encode和ec_GFp_mont_field_decode函数的使用方法及其在群特征设置中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在§5.3.3设置椭圆曲线特征等函数中会遇到编码函数ec_GFp_mont_field_encode和解码函数ec_GFp_mont_field_decode,其实这两个函数是在做大整数和Montgomery整数之间的转换,它们与前面提到的符号to_montfrom_mont是一个意思。

ec_GFp_mont_field_encode(group, r, a)

BN_to_montgomery(r, a, group->field_data1)

r to_mont(a)   

表示将大整数a转化成Montgomery整数r

ec_GFp_mont_field_decode(group, r, a)

BN_from_montgomery(r, a, group->field_data1)

r from_mont(a)      

表示将Montgomery整数a转化成大整数r

        to_montfrom_mont是我们自己定义的见名识意的简单记号,而另外的四个函数ec_GFp_mont_field_encodeec_GFp_mont_field_decodeBN_to_montgomery和BN_from_montgomery是代码中定义了的函数。BN_to_montgomery和BN_from_montgomery的详细介绍请参见§3.2.3ec_GFp_mont_field_encodeec_GFp_mont_field_decode的详细介绍马上给出。

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

int ec_GFp_mont_field_encode(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a)       

功能:    利用群特征将大整数a转化成Montgomery整数r

输入:    groupa

输出:    r

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

出处:    ecp_mont.c

备注:    其作用等价于        r to_mont(a)

也等价于        BN_to_montgomery(r, a, group->field_data1);

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

        接下来是解码函数ec_GFp_mont_field_decode的详细解释。

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

int ec_GFp_mont_field_decode(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a)       

功能:    利用群特征将Montgomery型数a转化成大整数r

输入:    groupa

输出:    r

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

出处:    ecp_mont.c

备注:    其作用等价于        r from_mont(a)

也等价于        BN_from_montgomery(r, a, group->field_data1);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值