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

OpenSSL密码库算法笔记——第5.1.1章 椭圆曲线点群的定义下面定义的椭圆曲线点群不仅包含了域的信息和曲线的信息 甚至还包括了很多别的有利于实现的信息 椭圆曲线点群的定义如下 typedef struct ec group st EC GROUP struct ec group st const EC METHOD meth EC POINT generator BIGNUM order cofactor int

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

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

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文件。

const EC_METHOD *meth指出椭圆曲线所用的是那些算法,详情参见§5.1.2。

EC_POINT *generator为基点(EC_POINT的定义参见§5.1.3)。

BIGNUM order, cofactor为基点的阶和相伴因子。

point_conversion_form_t asn1_form为点的压缩形式(参见§5.4.5)。

BIGNUM field对素域而言就是特征p。

BIGNUM a, b为曲线参数,即Weierstrass方程中的参数a、b。

int a_is_minus3; 判断a是否为负3,因为a为负3时点的运算可优化(参见§5.4.4)。

void *field_data1, *field_data2和int (*field_mod_func)(BIGNUM *, const BIGNUM *, const BIGNUM *)是为了优化点运算而采取的特殊方法(如Montgomery方法)。

编程小号
上一篇 2025-03-14 21:40
下一篇 2025-03-09 18:11

相关推荐

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