在§5.3.3设置椭圆曲线特征等函数中会遇到编码函数ec_GFp_mont_field_encode和解码函数ec_GFp_mont_field_decode,其实这两个函数是在做大整数和Montgomery整数之间的转换,它们与前面提到的符号to_mont和from_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_mont和from_mont是我们自己定义的见名识意的简单记号,而另外的四个函数ec_GFp_mont_field_encode、ec_GFp_mont_field_decode、BN_to_montgomery和BN_from_montgomery是代码中定义了的函数。BN_to_montgomery和BN_from_montgomery的详细介绍请参见§3.2.3,ec_GFp_mont_field_encode和ec_GFp_mont_field_decode的详细介绍马上给出。

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

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

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

输入:    group,a

输出:    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

输入:    group,a

输出:    r

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

出处:    ecp_mont.c

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

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

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

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

  1. OpenSSL密码库算法笔记——第5.1.1章 椭圆曲线点群的定义

    下面定义的椭圆曲线点群不仅包含了域的信息和曲线的信息,甚至还包括了很多别的有利于实现的信息. 椭圆曲线点群的定义如下. typedef struct ec_group_st   EC_GROUP; s ...

  2. OpenSSL密码库算法笔记——第5.3.1章 椭圆曲线点群的算法集

    在使用椭圆曲线之前,必需先设定好曲线上的算法集,只有这样在应用中才知道应该使用哪些函数. 下面就来看看怎样设定好曲线上的方法集. ─────────────────────────────────── ...

  3. OpenSSL密码库算法笔记——第5.3.3章 椭圆曲线点群信息的基本操作

    新的群建好之后,就可以开始对这个群进行一些基本得操作了,如需要把很多必要的信息(如特征p.Weierstrass方程参数a.b.基点和阶等)添加进群里面去,同时在必要时还需要将这些信息读出来. 先来看 ...

  4. OpenSSL密码库算法笔记——第5.3.2章 椭圆曲线点群的建立,释放和复制

    方法集合设定好之后,就可以开始新建一个椭圆曲线点群了.新建点群的函数如下: ─────────────────────────────────────── EC_GROUP *EC_GROUP_new ...

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

    在定义椭圆曲线点群时出现了描述曲线所用算法的参数const EC_METHOD *meth,这一节就来看看这个参数有什么用处. 椭圆曲线算法集的定义如下. typedef struct ec_meth ...

  6. OpenSSL密码库算法笔记——第5.4.6章 椭圆曲线的无穷远点

    前面已经提到无穷远点为椭圆曲线加法群的单位元,记为O.这个无穷远点在仿射坐标系下是无法表示的,在Jacobi射影坐标系下为,.为了实现起来方便,在代码中将无穷远点简化为Z分量为0,而不再去考虑X坐标和 ...

  7. OpenSSL密码库算法笔记——第5.4.2章 椭圆曲线上点的射影坐标表示

    射影坐标又分成好几种--标准射影坐标.Jacobi射影坐标.Chudnovsky射影坐标. 在标准射影坐标中,射影点(x, y, z),z≠0,对应仿射点(x/z, y/z),椭圆曲线的射影方程为y2 ...

  8. OpenSSL密码库算法笔记——第5.1.3章 椭圆曲线点的定义

    有了椭圆曲线后,自然就得考虑曲线上的点.点的表示有很多种,最简单最常见的是用仿射坐标(x, y)表示,但使用仿射坐标会使得点的运算速度很慢,所以出现了多种射影坐标.在代码中选择使用的是仿射坐标和Jac ...

  9. OpenSSL密码库算法笔记——第5.4.9章 椭圆曲线点的加法

    先来回忆下前面提到的仿射点的加法. 曲线上的两个放射点P1=(x1,y1)和P2=(x2,y2)做加法P3=P1+P2=(x3,y3),当P1=P2时,称此时的加法运算为二倍点运算.如果P1≠-P2, ...

最新文章

  1. Vertica的这些事lt;十一gt;—— Vertica 管理
  2. will_paginate 用作查询分页的注意事项
  3. 单数组去重(日常记录)
  4. 微型计算机2013年10月下,微型计算机及接口技术2013年10月真题试题(04732)
  5. Angular中实现路由跳转并通过get方式传递参数
  6. 20170227玩呗娱乐
  7. kaggle用命令提交
  8. 获取Sql服务器列表 (C#)
  9. 转:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确 .
  10. 面试中海量数据处理总结
  11. linux ping 8.8.8.8 不通,ping www.baidu.com和ping 8.8.8.8出现ping不通
  12. Oracle PL/SQL编程之变量
  13. 有序列表ol与无序列表ul用法
  14. 客户价值分析—RFM模型及变形
  15. 最佳牛围栏题解 二分答案
  16. 《高质量C++/C编程指南(林锐)》学习笔记
  17. 安利个数据库工具dbeaver
  18. php怎么将网页变成图片格式,如何把网页转换成图片 在线网页转换成pdf文档格式 网页转换工具...
  19. Javascript保存网页为图片
  20. SQL join关联三个表或多个表

热门文章

  1. webDriver以及Selenium使用总结
  2. 电路板的爬电距离和电气间隙是怎么规定的?
  3. datax运行自检命令报错 datax/plugin/reader/._xxxx/plugin.json]不存在
  4. css基础选择器有哪些
  5. EOL while scanning string literal的问题解决
  6. DNS拨测shell脚本
  7. AI时代下零售商的新商业模式
  8. 通信常识:波特率、数据传输速率与带宽的相互关系(转)
  9. AIops落地5大原则
  10. 《学活Linux》第二讲——内核模块和驱动模型