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

本文详细解析了在椭圆曲线上判断一个点是否位于其上的数学原理与算法实现。介绍了素域Fp上椭圆曲线的方程形式,并阐述了通过Jacobi射影点满足射影方程的条件进行点在曲线上的判断。此外,还探讨了当Z分量为1时计算量减少的优化方法,以及提供了具体函数EC_POINT_is_on_curve的功能、输入、输出和返回值说明。

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值