openssl3.2 - exp - 选择最好的内建椭圆曲线

文章目录

    • openssl3.2 - exp - 选择最好的内建椭圆曲线
    • 概述
    • 笔记
    • 将 openssl ecparam -list_curves 实现迁移到自己的demo工程
    • 备注
    • END

openssl3.2 - exp - 选择最好的内建椭圆曲线

概述

在openssl中使用椭圆曲线, 只允许选择椭圆曲线的名字, 无法给定椭圆曲线的位数.
估计每种椭圆曲线都有固定的位数(bit prime field)
openssl.exe有命令可以列出全部的椭圆曲线列表

openssl ecparam -list_curves


D:\my_tmp>openssl ecparam -list_curvessecp112r1 : SECG/WTLS curve over a 112 bit prime fieldsecp112r2 : SECG curve over a 112 bit prime fieldsecp128r1 : SECG curve over a 128 bit prime fieldsecp128r2 : SECG curve over a 128 bit prime fieldsecp160k1 : SECG curve over a 160 bit prime fieldsecp160r1 : SECG curve over a 160 bit prime fieldsecp160r2 : SECG/WTLS curve over a 160 bit prime fieldsecp192k1 : SECG curve over a 192 bit prime fieldsecp224k1 : SECG curve over a 224 bit prime fieldsecp224r1 : NIST/SECG curve over a 224 bit prime fieldsecp256k1 : SECG curve over a 256 bit prime fieldsecp384r1 : NIST/SECG curve over a 384 bit prime fieldsecp521r1 : NIST/SECG curve over a 521 bit prime fieldprime192v1: NIST/X9.62/SECG curve over a 192 bit prime fieldprime192v2: X9.62 curve over a 192 bit prime fieldprime192v3: X9.62 curve over a 192 bit prime fieldprime239v1: X9.62 curve over a 239 bit prime fieldprime239v2: X9.62 curve over a 239 bit prime fieldprime239v3: X9.62 curve over a 239 bit prime fieldprime256v1: X9.62/SECG curve over a 256 bit prime fieldsect113r1 : SECG curve over a 113 bit binary fieldsect113r2 : SECG curve over a 113 bit binary fieldsect131r1 : SECG/WTLS curve over a 131 bit binary fieldsect131r2 : SECG curve over a 131 bit binary fieldsect163k1 : NIST/SECG/WTLS curve over a 163 bit binary fieldsect163r1 : SECG curve over a 163 bit binary fieldsect163r2 : NIST/SECG curve over a 163 bit binary fieldsect193r1 : SECG curve over a 193 bit binary fieldsect193r2 : SECG curve over a 193 bit binary fieldsect233k1 : NIST/SECG/WTLS curve over a 233 bit binary fieldsect233r1 : NIST/SECG/WTLS curve over a 233 bit binary fieldsect239k1 : SECG curve over a 239 bit binary fieldsect283k1 : NIST/SECG curve over a 283 bit binary fieldsect283r1 : NIST/SECG curve over a 283 bit binary fieldsect409k1 : NIST/SECG curve over a 409 bit binary fieldsect409r1 : NIST/SECG curve over a 409 bit binary fieldsect571k1 : NIST/SECG curve over a 571 bit binary fieldsect571r1 : NIST/SECG curve over a 571 bit binary fieldc2pnb163v1: X9.62 curve over a 163 bit binary fieldc2pnb163v2: X9.62 curve over a 163 bit binary fieldc2pnb163v3: X9.62 curve over a 163 bit binary fieldc2pnb176v1: X9.62 curve over a 176 bit binary fieldc2tnb191v1: X9.62 curve over a 191 bit binary fieldc2tnb191v2: X9.62 curve over a 191 bit binary fieldc2tnb191v3: X9.62 curve over a 191 bit binary fieldc2pnb208w1: X9.62 curve over a 208 bit binary fieldc2tnb239v1: X9.62 curve over a 239 bit binary fieldc2tnb239v2: X9.62 curve over a 239 bit binary fieldc2tnb239v3: X9.62 curve over a 239 bit binary fieldc2pnb272w1: X9.62 curve over a 272 bit binary fieldc2pnb304w1: X9.62 curve over a 304 bit binary fieldc2tnb359v1: X9.62 curve over a 359 bit binary fieldc2pnb368w1: X9.62 curve over a 368 bit binary fieldc2tnb431r1: X9.62 curve over a 431 bit binary fieldwap-wsg-idm-ecid-wtls1: WTLS curve over a 113 bit binary fieldwap-wsg-idm-ecid-wtls3: NIST/SECG/WTLS curve over a 163 bit binary fieldwap-wsg-idm-ecid-wtls4: SECG curve over a 113 bit binary fieldwap-wsg-idm-ecid-wtls5: X9.62 curve over a 163 bit binary fieldwap-wsg-idm-ecid-wtls6: SECG/WTLS curve over a 112 bit prime fieldwap-wsg-idm-ecid-wtls7: SECG/WTLS curve over a 160 bit prime fieldwap-wsg-idm-ecid-wtls8: WTLS curve over a 112 bit prime fieldwap-wsg-idm-ecid-wtls9: WTLS curve over a 160 bit prime fieldwap-wsg-idm-ecid-wtls10: NIST/SECG/WTLS curve over a 233 bit binary fieldwap-wsg-idm-ecid-wtls11: NIST/SECG/WTLS curve over a 233 bit binary fieldwap-wsg-idm-ecid-wtls12: WTLS curve over a 224 bit prime fieldOakley-EC2N-3:IPSec/IKE/Oakley curve #3 over a 155 bit binary field.Not suitable for ECDSA.Questionable extension field!Oakley-EC2N-4:IPSec/IKE/Oakley curve #4 over a 185 bit binary field.Not suitable for ECDSA.Questionable extension field!brainpoolP160r1: RFC 5639 curve over a 160 bit prime fieldbrainpoolP160t1: RFC 5639 curve over a 160 bit prime fieldbrainpoolP192r1: RFC 5639 curve over a 192 bit prime fieldbrainpoolP192t1: RFC 5639 curve over a 192 bit prime fieldbrainpoolP224r1: RFC 5639 curve over a 224 bit prime fieldbrainpoolP224t1: RFC 5639 curve over a 224 bit prime fieldbrainpoolP256r1: RFC 5639 curve over a 256 bit prime fieldbrainpoolP256t1: RFC 5639 curve over a 256 bit prime fieldbrainpoolP320r1: RFC 5639 curve over a 320 bit prime fieldbrainpoolP320t1: RFC 5639 curve over a 320 bit prime fieldbrainpoolP384r1: RFC 5639 curve over a 384 bit prime fieldbrainpoolP384t1: RFC 5639 curve over a 384 bit prime fieldbrainpoolP512r1: RFC 5639 curve over a 512 bit prime fieldbrainpoolP512t1: RFC 5639 curve over a 512 bit prime fieldSM2       : SM2 curve over a 256 bit prime field

比较每种椭圆曲线的质数域位数, 挑出最大的那个.

sect571k1 : NIST/SECG curve over a 571 bit binary field
sect571r1 : NIST/SECG curve over a 571 bit binary field

可知, 质数域位数最大的椭圆曲线有2个 : sect571k1 或者 sect571r1, 位数都是571位.

笔记

将 openssl ecparam -list_curves 实现迁移到自己的demo工程

想看看官方怎么实现的这个命令.

/*!
* \file exp017_ecparam_list_curves.cpp
* \note 看看openssl如何实现命令 openssl ecparam -list_curves
*/#include "my_openSSL_lib.h"
#include <openssl/crypto.h>
#include <openssl/bio.h>
#include <openssl/ec.h>
#include <openssl/objects.h>#include <stdlib.h>
#include <stdio.h>
#include <assert.h>#include "CMemHookRec.h"void my_openssl_app();
int list_builtin_curves(BIO* out);int main(int argc, char** argv)
{setvbuf(stdout, NULL, _IONBF, 0); // 清掉stdout缓存, 防止调用printf时阻塞mem_hook();my_openssl_app();mem_unhook();/*! run resultlist_builtin_curves, cnt = 82--------------------secp112r1           : -20SECG/WTLS curve over a 112 bit prime fieldsecp112r2           : -20SECG curve over a 112 bit prime fieldsecp128r1           : -20SECG curve over a 128 bit prime fieldsecp128r2           : -20SECG curve over a 128 bit prime fieldsecp160k1           : -20SECG curve over a 160 bit prime fieldsecp160r1           : -20SECG curve over a 160 bit prime fieldsecp160r2           : -20SECG/WTLS curve over a 160 bit prime fieldsecp192k1           : -20SECG curve over a 192 bit prime fieldsecp224k1           : -20SECG curve over a 224 bit prime fieldsecp224r1           : -20NIST/SECG curve over a 224 bit prime fieldsecp256k1           : -20SECG curve over a 256 bit prime fieldsecp384r1           : -20NIST/SECG curve over a 384 bit prime fieldsecp521r1           : -20NIST/SECG curve over a 521 bit prime fieldprime192v1          : -20NIST/X9.62/SECG curve over a 192 bit prime fieldprime192v2          : -20X9.62 curve over a 192 bit prime fieldprime192v3          : -20X9.62 curve over a 192 bit prime fieldprime239v1          : -20X9.62 curve over a 239 bit prime fieldprime239v2          : -20X9.62 curve over a 239 bit prime fieldprime239v3          : -20X9.62 curve over a 239 bit prime fieldprime256v1          : -20X9.62/SECG curve over a 256 bit prime fieldsect113r1           : -20SECG curve over a 113 bit binary fieldsect113r2           : -20SECG curve over a 113 bit binary fieldsect131r1           : -20SECG/WTLS curve over a 131 bit binary fieldsect131r2           : -20SECG curve over a 131 bit binary fieldsect163k1           : -20NIST/SECG/WTLS curve over a 163 bit binary fieldsect163r1           : -20SECG curve over a 163 bit binary fieldsect163r2           : -20NIST/SECG curve over a 163 bit binary fieldsect193r1           : -20SECG curve over a 193 bit binary fieldsect193r2           : -20SECG curve over a 193 bit binary fieldsect233k1           : -20NIST/SECG/WTLS curve over a 233 bit binary fieldsect233r1           : -20NIST/SECG/WTLS curve over a 233 bit binary fieldsect239k1           : -20SECG curve over a 239 bit binary fieldsect283k1           : -20NIST/SECG curve over a 283 bit binary fieldsect283r1           : -20NIST/SECG curve over a 283 bit binary fieldsect409k1           : -20NIST/SECG curve over a 409 bit binary fieldsect409r1           : -20NIST/SECG curve over a 409 bit binary fieldsect571k1           : -20NIST/SECG curve over a 571 bit binary field // !!! best one sect571r1           : -20NIST/SECG curve over a 571 bit binary field // !!! best onec2pnb163v1          : -20X9.62 curve over a 163 bit binary fieldc2pnb163v2          : -20X9.62 curve over a 163 bit binary fieldc2pnb163v3          : -20X9.62 curve over a 163 bit binary fieldc2pnb176v1          : -20X9.62 curve over a 176 bit binary fieldc2tnb191v1          : -20X9.62 curve over a 191 bit binary fieldc2tnb191v2          : -20X9.62 curve over a 191 bit binary fieldc2tnb191v3          : -20X9.62 curve over a 191 bit binary fieldc2pnb208w1          : -20X9.62 curve over a 208 bit binary fieldc2tnb239v1          : -20X9.62 curve over a 239 bit binary fieldc2tnb239v2          : -20X9.62 curve over a 239 bit binary fieldc2tnb239v3          : -20X9.62 curve over a 239 bit binary fieldc2pnb272w1          : -20X9.62 curve over a 272 bit binary fieldc2pnb304w1          : -20X9.62 curve over a 304 bit binary fieldc2tnb359v1          : -20X9.62 curve over a 359 bit binary fieldc2pnb368w1          : -20X9.62 curve over a 368 bit binary fieldc2tnb431r1          : -20X9.62 curve over a 431 bit binary fieldwap-wsg-idm-ecid-wtls1: -20WTLS curve over a 113 bit binary fieldwap-wsg-idm-ecid-wtls3: -20NIST/SECG/WTLS curve over a 163 bit binary fieldwap-wsg-idm-ecid-wtls4: -20SECG curve over a 113 bit binary fieldwap-wsg-idm-ecid-wtls5: -20X9.62 curve over a 163 bit binary fieldwap-wsg-idm-ecid-wtls6: -20SECG/WTLS curve over a 112 bit prime fieldwap-wsg-idm-ecid-wtls7: -20SECG/WTLS curve over a 160 bit prime fieldwap-wsg-idm-ecid-wtls8: -20WTLS curve over a 112 bit prime fieldwap-wsg-idm-ecid-wtls9: -20WTLS curve over a 160 bit prime fieldwap-wsg-idm-ecid-wtls10: -20NIST/SECG/WTLS curve over a 233 bit binary fieldwap-wsg-idm-ecid-wtls11: -20NIST/SECG/WTLS curve over a 233 bit binary fieldwap-wsg-idm-ecid-wtls12: -20WTLS curve over a 224 bit prime fieldOakley-EC2N-3       : -20IPSec/IKE/Oakley curve #3 over a 155 bit binary field.Not suitable for ECDSA.Questionable extension field!Oakley-EC2N-4       : -20IPSec/IKE/Oakley curve #4 over a 185 bit binary field.Not suitable for ECDSA.Questionable extension field!brainpoolP160r1     : -20RFC 5639 curve over a 160 bit prime fieldbrainpoolP160t1     : -20RFC 5639 curve over a 160 bit prime fieldbrainpoolP192r1     : -20RFC 5639 curve over a 192 bit prime fieldbrainpoolP192t1     : -20RFC 5639 curve over a 192 bit prime fieldbrainpoolP224r1     : -20RFC 5639 curve over a 224 bit prime fieldbrainpoolP224t1     : -20RFC 5639 curve over a 224 bit prime fieldbrainpoolP256r1     : -20RFC 5639 curve over a 256 bit prime fieldbrainpoolP256t1     : -20RFC 5639 curve over a 256 bit prime fieldbrainpoolP320r1     : -20RFC 5639 curve over a 320 bit prime fieldbrainpoolP320t1     : -20RFC 5639 curve over a 320 bit prime fieldbrainpoolP384r1     : -20RFC 5639 curve over a 384 bit prime fieldbrainpoolP384t1     : -20RFC 5639 curve over a 384 bit prime fieldbrainpoolP512r1     : -20RFC 5639 curve over a 512 bit prime fieldbrainpoolP512t1     : -20RFC 5639 curve over a 512 bit prime fieldSM2                 : -20SM2 curve over a 256 bit prime field--------------------free map, g_mem_hook_map.size() = 0*/return 0;
}void my_openssl_app()
{BIO* bio_out = NULL;do {bio_out = BIO_new_fp(stdout, 0);if (NULL == bio_out){break;}list_builtin_curves(bio_out);} while (false);if (NULL != bio_out){BIO_free(bio_out);bio_out = NULL;}
}int list_builtin_curves(BIO* out)
{int ret = 0;EC_builtin_curve* curves = NULL;size_t n, crv_len = EC_get_builtin_curves(NULL, 0);BIO_printf(out, "list_builtin_curves, cnt = %d\n", crv_len);curves = (EC_builtin_curve*)OPENSSL_malloc(sizeof(*curves) * crv_len);if (!EC_get_builtin_curves(curves, crv_len)){BIO_printf(out, "err\n");goto end;}BIO_printf(out, "--------------------\n");for (n = 0; n < crv_len; n++) {const char* comment = curves[n].comment;const char* sname = OBJ_nid2sn(curves[n].nid);if (comment == NULL)comment = "CURVE DESCRIPTION NOT AVAILABLE";if (sname == NULL)sname = "";BIO_printf(out, "  %-20s: -20%s\n", sname, comment);}BIO_printf(out, "--------------------\n");ret = 1;
end:OPENSSL_free(curves);return ret;
}

备注

在这里插入图片描述
从查到的资料看, ECC521就比普通的RSA位数强多了.
现在主流网站用的RSA证书位数都是4096(e.g. MS主站)
sect571k1, sect571r1的位数是571位, 强度应该更高吧.

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

储能系统--户用储能市场现状(三)

1、户用储能市场现状 2022年&#xff0c;俄乌冲突造成能源价格飙升&#xff0c;欧洲居民电价飞涨&#xff0c;成为点燃户储需求的引线。以德国为例&#xff0c;2022年的居民电价达到40欧分/kWh以上&#xff0c;相比2021年初翻了三倍。因此2022年被称为户储爆发元年&#xff0c…

深度学习armv8/armv9 cache的原理

文章目录 前言1、为什么要用cache?2、背景:架构的变化?2、cache的层级关系 ––big.LITTLE架构&#xff08;A53为例)3、cache的层级关系 –-- DynamIQ架构&#xff08;A76为例)4、DSU / L3 cache5、L1/L2/L3 cache都是多大呢6、cache相关的术语介绍7、cache的分配策略(alocat…

Llama-3即将发布:Meta公布其庞大的AI算力集群

Meta&#xff0c;这家全球科技巨头&#xff0c;再次以其在人工智能&#xff08;AI&#xff09;领域的雄心壮志震惊了世界。3月13日&#xff0c;公司在其官方网站上宣布了两个全新的24K H100 GPU集群&#xff0c;这些集群专为训练其大型模型Llama-3而设计&#xff0c;总计拥有高…

C++函数 加括号与不加括号

很多时候&#xff0c;我们会看到一些在创建对象时有的加括号有的不加括号 那么&#xff0c;这是什么情况呢&#xff1f; 总结&#xff1a;函数需要加上括号&#xff0c;加上括号会对函数初始化&#xff0c;不加括号可能导致未知错误 我们来验证一下。 1.基本数据类型不带括…

利用Python进行网络爬虫:Beautiful Soup和Requests的应用【第131篇—Beautiful Soup】

利用Python进行网络爬虫&#xff1a;Beautiful Soup和Requests的应用 在网络数据变得日益丰富和重要的今天&#xff0c;网络爬虫成为了获取和分析数据的重要工具之一。Python作为一种强大而灵活的编程语言&#xff0c;在网络爬虫领域也拥有广泛的应用。本文将介绍如何使用Pyth…

C++进阶学习

模板编程 模板函数和模板类的基本概念和用法 模板编程是C中一种强大的特性&#xff0c;它允许程序员编写与类型无关的代码。这意味着你可以编写一个函数或类&#xff0c;让它能够处理任何数据类型。这不仅可以提高代码的重用性&#xff0c;还可以提高编程效率和程序的可维护性…

Verilog——Verilog的历史

第1节 Verilog的历史 在传统硬件电路的设计方法中&#xff0c;当设计工程师需要设计一个新的硬件、数字电路或数字逻辑系统 时&#xff0c;需要为此设计并画出一张线路图&#xff0c;随后在CAE&#xff08;计算机辅助工程分析&#xff09;工作站上进行设计。所 设计的线路图由线…

.Net Core 与数据库

查询 Linq var indexList new long[] { 1, 2, 3}; List<long> list new List<long>(); if (String.IsNullOrWhiteSpace(request.Key) false) {var ret from aa in _db.TblAAjoin bb in _db.TblBBon aa.PId equals bb.Idjoin cc in _db.TblCCon aa.CId equals…

13、Linux-Shell02:参数传递和运算符

目录 一、参数传递 二、运算符 1、算术运算符&#xff08;、-、*、/、%、、、&#xff01;&#xff09; 2、关系运算符 3、逻辑运算符 4、字符串运算符 5、文件运算符 一、参数传递 执行脚本时可以为脚本文件传递参数&#xff0c;在脚本中可以处理这些参数。 第n个参数…

[LeetCode][LCR172]统计目标成绩的出现次数——二分找边界

题目 LCR 172. 统计目标成绩的出现次数 某班级考试成绩按非严格递增顺序记录于整数数组 scores&#xff0c;请返回目标成绩 target 的出现次数。 示例 1&#xff1a; 输入&#xff1a;scores [2, 2, 3, 4, 4, 4, 5, 6, 6, 8], target 4 输出&#xff1a;3 示例 2&#xff1a…

Elasticseach基础认识

ES的起源&#xff1f; Elasticsearch 是由 Elastic 公司创建 简称&#xff08;ES&#xff09; Elasticsearch 是一个分布式、免费和开放的搜索和分析引擎&#xff0c;适用于所有类型的数据&#xff0c;包括文本、数字、地理空间、结构化和非结构化数据。 Elasticsearch 基于 …

Oracle 主从切换脚本

一、 切换前预检查 1. dg_precheck_main_v1.4.sh #!/bin/bash#********************************************************************************** # Author: Hehuyi_In # Date: 2022年06月16日 # FileName: dg_precheck_main_v1.4.sh # # For sys user, execute the sc…

LLM之RAG实战(二十九)| 探索RAG PDF解析

对于RAG来说&#xff0c;从文档中提取信息是一种不可避免的场景&#xff0c;确保从源文件中提取出有效的内容对于提高最终输出的质量至关重要。 文件解析过程在RAG中的位置如图1所示&#xff1a; 在实际工作中&#xff0c;非结构化数据比结构化数据丰富得多。如果这些海量数据无…

【向课题组提交实习申请模板】

实习申请 尊敬的老师&#xff1a; 本人系xx学院xx专业的学生xx。现已通过xx公司202x届“xx星”实习计划的面试&#xff0c;并成功获得xx工程师实习岗位&#xff1b;工作内容为xx&#xff1b;实习地点位于xx&#xff1b;实习时长为暑期x个月。我希望能够通过此次实习&#xff0…

Redis事务及原理

Redis 事务以及原理 Redis 中的事务是一组命令的集合&#xff0c;是 Redis 的最小执行单位。它可以保证一次执行多个命令&#xff0c;每个事务是一个单独的隔离操作&#xff0c;事务中的所有命令都会序列化、按顺序地执行。服务端在执行事务的过程中&#xff0c;不会被其他客户…

HTML、CSS、JavaScript

W3C标准&#xff1a;网页主要由三部分组成 ➢结构&#xff1a;HTML ➢表现&#xff1a;CSS ➢行为&#xff1a;JavaScript HTML HTML是一门语言&#xff0c;所有的网页都是用HTML这语言编写出来的 HTML(Hyper Text Markup Language)&#xff1a;超文本标记语言 ➢超文本&#x…

【python】(10)语法糖

Python 语法糖(Syntactic Sugar)是指 Python 中的一些语法特性,它们并不改变语言的功能,但能够使代码更加简洁、易读和优雅。 1. 列表推导式(List Comprehensions) 列表推导式是 Python 中一种简洁的创建列表的方法,它允许我们使用单行代码来生成列表,避免了传统的循…

微服务篇-A JavaEE架构演进历程(学习总结)

原创作者&#xff1a;田超凡 版权所有&#xff0c;转载请注明原作者&#xff0c;严禁复制转载 Level1 传统架构 就是大家众所周知的SSM或SSH了&#xff0c; 优点&#xff1a;三层架构职责清晰 缺点&#xff1a;依赖库管理难度大&#xff0c;协同开发代码冲突和功能扩展性差&a…

如何使用vue定义组件之——子组件调用父组件数据

1.定义父子模板template <div class"container"><my-father></my-father><my-father></my-father><my-father></my-father><!-- 此处无法调用子组件&#xff0c;子组件必须依赖于父组件进行展示 --><!-- <my-…

Java Web实战(五)Web后端之AOP-面向切面编程原理用法详解

文章目录 1. 场景示例Spring AOP快速入门&#xff1a;统计各个业务层方法执行耗时 2. AOP核心概念2.1 通知类型2.2 PointCut2.3 通知顺序2.4 使用通知函数的参数2.5 示例 3. 切入点表达式3.1 切入点表达式-execution3.2 切入点表达式-annotation 4. 案例 AOP&#xff1a;Aspect…