OpenSSL密码库算法笔记——第5.1.2章 椭圆曲线算法集

OpenSSL密码库算法笔记——第5.1.2章 椭圆曲线算法集在定义椭圆曲线点群时出现了描述曲线所用算法的参数constEC_METHOD*meth,这一节就来看看这个参数有什么用处。椭圆曲线算法集的定义如下。typedefstructec_method_stEC_METHOD;structec_method_st{(具体定义略,详情可参见代码文件ec_lcl.h)};//EC_METHOD在结构体ec…

大家好,又见面了,我是你们的朋友全栈君。

在定义椭圆曲线点群时出现了描述曲线所用算法的参数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。这样就做到了将“判断点是否在曲线上”函数接口的统一。

关于函数接口的统一问题,在后面会进一步讨论。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/162144.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 职称计算机考试模块教程怎么用,如何巧妙的选择职称计算机考试模块?

    职称计算机考试模块教程怎么用,如何巧妙的选择职称计算机考试模块?【摘要】环球网校分享的如何巧妙的选择职称计算机考试模块?希望对大家备考有帮助,更多资料敬请关注环球职称计算机考试频道,网校会及时更新考试资料…… 相关推荐:全国2016年职称计算机考试报名时间汇总【摘要】环球网校分享的“如何巧妙的选择职称计算机考试模块?”希望对大家备考有帮助,更多资料敬请关注环球职称计算机考试频道,网校会及时更新考试资料……职称计算机考试,根据学习内容划分了十四类共25个模块,评…

  • 浅谈搜索引擎技术原理与架构设计_小米商城搜索引擎架构

    浅谈搜索引擎技术原理与架构设计_小米商城搜索引擎架构搜索引擎是我们非常熟悉的互联网产品,上网都离不开搜索,毫无疑问,在pc端,是多数流量的入口。大家都会说,“有问题,百度一下”,当初百度靠这句广告语,打开了国内很大的市场。曾经看过一个百度员工写的段子:

  • 自我学习总结之——NFV

    自我学习总结之——NFVNFV–DFC1.什么是NFV?网络功能虚拟化NFV(NetworkFunctionsVirtualization)在NFV出现之前设备的专业化很突出,具体设备都有其专门的功能实现,而之后设备的控制平面与具体设备进行分离,不同设备的控制平面基于虚拟机,虚拟机基于云操作系统,这样当企业需要部署新业务时只需要在开放的虚拟机平台上创建相应的虚机,然后在虚拟机上安装相应功能的软件包即可。这种方式…

  • 测试这个东西好不啦

    测试这个东西好不啦欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗Ctrl+B斜体Ctrl+I引用Ctrl

    2022年10月31日
  • linux recv返回值,recv recvfrom[通俗易懂]

    linux recv返回值,recv recvfrom[通俗易懂]recv和recvfrom都是用来接受来自的网络的数据。来看看它们的原型:intrecv(SOCKET,charFAR*,int,int);intrecvfrom(SOCKET,charFAR*,int,int,structsockaddrFAR*,intFAR*);这是在windows下面的定义。在linux下面的定义只是将SOCKET改成int,那么在linux下面的原型是这样:…

  • app怎么模拟弱网测试(应用最多的工具箱app)

    1.弱网模拟工具1.1. iOS平台,通过自带的开发者选项》NetworkLinkCondition,即可简单的模拟各种速度的网络情况:1.2通过抓包工具,设置延迟,进行模拟不同的网络情况,比如常用的fiddler,charles:1.2.1fiddler操作:自定义延迟 》开启网络模拟即可,如图:1.2.2Charles操作:

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号