下面定义的椭圆曲线点群不仅包含了域的信息和曲线的信息,甚至还包括了很多别的有利于实现的信息。

椭圆曲线点群的定义如下。

typedef struct ec_group_st   EC_GROUP;

struct ec_group_st {

const EC_METHOD *meth;

EC_POINT *generator;

BIGNUM order, cofactor;

int curve_name;

int asn1_flag;

point_conversion_form_t asn1_form;

unsigned char *seed;

size_t seed_len;

EC_EXTRA_DATA *extra_data;

BIGNUM field;

unsigned int poly[5];

BIGNUM a, b;

int a_is_minus3;

void *field_data1;

void *field_data2;

int (*field_mod_func)(BIGNUM *, const BIGNUM *, const BIGNUM *);

} /* EC_GROUP */;

现在来介绍下上面列举出的部分参数,这部分介绍可参见代码中的ec.h和ec_lcl.h文件。

  1. const EC_METHOD *meth指出椭圆曲线所用的是那些算法,详情参见§5.1.2。
  2. EC_POINT *generator为基点(EC_POINT的定义参见§5.1.3)。
  3. BIGNUM order, cofactor为基点的阶和相伴因子。
  4. point_conversion_form_t asn1_form为点的压缩形式(参见§5.4.5)。
  5. BIGNUM field对素域而言就是特征p。
  6. BIGNUM a, b为曲线参数,即Weierstrass方程中的参数a、b。
  7. int a_is_minus3; 判断a是否为负3,因为a为负3时点的运算可优化(参见§5.4.4)。
  8. void *field_data1, *field_data2和int (*field_mod_func)(BIGNUM *, const BIGNUM *, const BIGNUM *)是为了优化点运算而采取的特殊方法(如Montgomery方法)。

OpenSSL密码库算法笔记——第5.1.1章 椭圆曲线点群的定义相关推荐

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

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

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

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

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

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

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

    在§5.3.3设置椭圆曲线特征等函数中会遇到编码函数ec_GFp_mont_field_encode和解码函数ec_GFp_mont_field_decode,其实这两个函数是在做大整数和Montgo ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. java post接口测试_接口测试——Java + TestNG 国家气象局接口(json解析)实例
  2. ContentType 列表
  3. iframe框架大小自适应
  4. protected访问权限_权限修饰符 /重写
  5. MySQL存储引擎及InnoDB并发控制介绍
  6. 使用Java对sftp带有中文路径的文件夹进行下载,乱码打不开文件夹
  7. 17年第八届蓝桥杯省赛(C语言B组) 题解
  8. 家长或孩子图像的Gif动画小人在少儿学习软件中的妙用.
  9. 【笔记】c c++如何打印变量地址
  10. 【软件开发架构平台】CH2 Spring IoC和Bean管理
  11. 网页抢东西插件_京东秒杀抢购的小脚本和chorme的一个开发者插件
  12. 你还把游戏本地化当作是游戏翻译
  13. 高等数学费马定理的证明
  14. VMware Workstation 安装红帽Linux
  15. HT66F2390/STM32——AM2320温湿度传感器
  16. 将秒换成 小时,分钟,秒
  17. 视频网站大幅提价无异于“逆水行舟”
  18. Buildroot中文用户手册
  19. Z字形变换(Java)
  20. 【xitongshoucang.com】全方位对Shift键大揭秘

热门文章

  1. yaw(pan)/pitch(tilt)/roll计算
  2. scratch二进制像素绘制 电子学会图形化编程scratch等级考试三级真题和答案解析2022年3月
  3. java程序员的男朋友,当今,程序员竟然成为最抢手男友?
  4. 银联 php hex2bin,php 实现银联商务H5支付的示例代码
  5. Makefile错误:commands commence before first target.
  6. 机器学习之最全知识图谱
  7. 3.java-判断是否为标准体重
  8. c++ 11 锁_双11好物推荐,这两款好用又实惠的智能锁只需几百块-新闻频道
  9. 表单中method=post是什么意思?
  10. [Pytorch系列-72]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 使用预训练模型训练CycleGAN模型