OpenSSL密码库算法笔记——第5.1.2章 椭圆曲线算法集
在定义椭圆曲线点群时出现了描述曲线所用算法的参数const EC_METHOD *meth,这一节就来看看这个参数有什么用处。
椭圆曲线算法集的定义如下。
typedef struct ec_method_st EC_METHOD;
struct ec_method_st {
(具体定义略,详情可参见代码文件ec_lcl.h)
};// EC_METHOD
在结构体ec_method_st中列举了实现过程中用到的各种椭圆曲线算法,比如椭圆曲线点群的建立和释放,设置群参数,点的比较,点的加法和倍乘等等,覆盖面很广,几乎涉及所有的椭圆曲线算法。
为什么需要这个算法集呢,它有什么作用呢?
其主要作用在于能够将函数在素域和二元域的接口统一起来。举个例子,“判断点是否在曲线上”只需要调用EC_POINT_is_on_curve函数,而无需考虑是二元域还是素域。那EC_POINT_is_on_curve怎么知道是对哪种类型的有限域呢?其中关键就在这个方法集上。先来看看EC_POINT_is_on_curve是怎么实现的吧。
int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point)
{
if (group->meth->is_on_curve == 0) return 0;
if (group->meth != point->meth) return 0;
return group->meth->is_on_curve(group, point);
}
对于不同类型的有限域,只要将各自“判断点是否在曲线上”的算法定义好,并在方法集中将指向函数说明清楚,那么函数group->meth->is_on_curve(group, point)就可以各自指向正确的地方。对素域而言,方法集将is_on_curve指向ec_GFp_simple_is_on_curve,而对二元域而言,方法集将is_on_curve指向ec_GF2m_simple_is_on_curve。这样就做到了将“判断点是否在曲线上”函数接口的统一。
关于函数接口的统一问题,在后面会进一步讨论。
OpenSSL密码库算法笔记——第5.1.2章 椭圆曲线算法集相关推荐
- OpenSSL密码库算法笔记——第4.1.1章 平方和算法
平方和算法是模指数运算的基本.如果指数e的二进制展开为,则利用平方和算法可以这样计算模指数: . ----(4.1) 现在 ...
- OpenSSL密码库算法笔记——第4.1.2章 窗口算法
如果存储空间足够的话,可以事先将一部分计算结果(比如指数很小时的运算结果)存储起来,到后面需要时再直接调用.窗口算法就用到了这种思想,它一次可以处理指数e的多个比特(不妨设为k比特,而k称为窗口的大小 ...
- OpenSSL密码库算法笔记——第5.1.1章 椭圆曲线点群的定义
下面定义的椭圆曲线点群不仅包含了域的信息和曲线的信息,甚至还包括了很多别的有利于实现的信息. 椭圆曲线点群的定义如下. typedef struct ec_group_st EC_GROUP; s ...
- OpenSSL密码库算法笔记——第5.3.1章 椭圆曲线点群的算法集
在使用椭圆曲线之前,必需先设定好曲线上的算法集,只有这样在应用中才知道应该使用哪些函数. 下面就来看看怎样设定好曲线上的方法集. ─────────────────────────────────── ...
- OpenSSL密码库算法笔记——第5.4.6章 椭圆曲线的无穷远点
前面已经提到无穷远点为椭圆曲线加法群的单位元,记为O.这个无穷远点在仿射坐标系下是无法表示的,在Jacobi射影坐标系下为,.为了实现起来方便,在代码中将无穷远点简化为Z分量为0,而不再去考虑X坐标和 ...
- OpenSSL密码库算法笔记——第5.4.2章 椭圆曲线上点的射影坐标表示
射影坐标又分成好几种--标准射影坐标.Jacobi射影坐标.Chudnovsky射影坐标. 在标准射影坐标中,射影点(x, y, z),z≠0,对应仿射点(x/z, y/z),椭圆曲线的射影方程为y2 ...
- OpenSSL密码库算法笔记——第5.1.3章 椭圆曲线点的定义
有了椭圆曲线后,自然就得考虑曲线上的点.点的表示有很多种,最简单最常见的是用仿射坐标(x, y)表示,但使用仿射坐标会使得点的运算速度很慢,所以出现了多种射影坐标.在代码中选择使用的是仿射坐标和Jac ...
- OpenSSL密码库算法笔记——第5.4.9章 椭圆曲线点的加法
先来回忆下前面提到的仿射点的加法. 曲线上的两个放射点P1=(x1,y1)和P2=(x2,y2)做加法P3=P1+P2=(x3,y3),当P1=P2时,称此时的加法运算为二倍点运算.如果P1≠-P2, ...
- OpenSSL密码库算法笔记——第5.4.1章 椭圆曲线上点的仿射坐标表示
椭圆曲线上点的表示分成仿射坐标系表示和射影坐标表示形式,首先来看看仿射坐标表示形式. 素域Fp上的椭圆曲线E由(仿射)方程y2=x3+ax+b决定,设曲线上的两个点为P1=(x1,y1),P2=(x2 ...
最新文章
- 开发板tftp:timeout问题
- html5语义化标签大全
- 用Eclipse开发JavaWeb项目:错误信息 javax.servlet.http.HttpServlet was not found on the Java Build Path...
- linux下文件描述符的介绍
- 怎么取消自动格式化_iPhone自动扣费怎么取消?App Store、微信、支付宝关闭自动扣费教程...
- 95-10-120-启动-GroupCoordinator
- BAT自动IP地址切换脚本
- vue + ElementUI如何动态删除表格当前行内容
- 计算机基础知识教程excel试题,大学生计算机基础excel试题及答案
- 计算机科学导论整理知识点,《计算机科学导论》 数据库基础知识
- CTF-密码学-培根密码
- 第22次 CCF CSP认证一二题题解及感悟
- 计算机电源风扇是吹风还是吸风,回答一些网友关于机箱内风道以及电源吸风还是抽风的问题...
- xshell如何使用
- 【那些年,我们一起追的女孩】第十四章
- S700K转辙机多机牵引道岔故障处理【转自微信公众号高速铁路信号技术交流】
- 设计模式:可复用面向对象软件的基础
- C#代码中用UL 0B 0X等前后缀表示数字
- 嵌入式开发对学历门槛要求高吗?
- 我们都是代码接盘侠,请做一位好前任!