首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用C++中的OpenSSL从DER文件中读取椭圆曲线公钥

在C++中使用OpenSSL从DER文件中读取椭圆曲线公钥,可以按照以下步骤进行:

  1. 导入OpenSSL库:首先,需要在C++项目中导入OpenSSL库。可以通过在项目配置中添加OpenSSL的头文件路径和库文件路径来实现。
  2. 打开DER文件:使用OpenSSL库中的函数打开DER文件,可以使用BIO_new_file函数来创建一个BIO对象,并使用BIO_read_filename函数将DER文件加载到BIO对象中。
代码语言:txt
复制
BIO* bio = BIO_new_file("public_key.der", "rb");
if (bio == nullptr) {
    // 处理文件打开失败的情况
}
  1. 读取公钥:使用OpenSSL库中的函数从DER文件中读取椭圆曲线公钥。可以使用d2i_PUBKEY_bio函数将DER格式的公钥数据解析为EVP_PKEY对象。
代码语言:txt
复制
EVP_PKEY* evpKey = d2i_PUBKEY_bio(bio, nullptr);
if (evpKey == nullptr) {
    // 处理公钥读取失败的情况
}
  1. 获取公钥信息:通过EVP_PKEY对象可以获取公钥的相关信息,例如公钥的算法类型、公钥的长度等。
代码语言:txt
复制
int keyType = EVP_PKEY_base_id(evpKey);
int keyLength = EVP_PKEY_bits(evpKey);
  1. 使用公钥进行加密或验证:获取到公钥后,可以使用OpenSSL库中提供的函数进行加密或验证操作,具体操作取决于你的需求。
代码语言:txt
复制
// 使用公钥进行加密
unsigned char* plaintext = (unsigned char*)"Hello, World!";
int plaintextLength = strlen((const char*)plaintext);
unsigned char* ciphertext = new unsigned char[EVP_PKEY_size(evpKey)];
int ciphertextLength = EVP_PKEY_encrypt_old(ciphertext, plaintext, plaintextLength, evpKey);

// 使用公钥进行验证
unsigned char* signature = ...; // 待验证的签名数据
int signatureLength = ...; // 签名数据的长度
int verifyResult = EVP_PKEY_verify(evpKey, signature, signatureLength, plaintext, plaintextLength);

以上是使用C++中的OpenSSL从DER文件中读取椭圆曲线公钥的基本步骤。在实际应用中,可以根据具体需求进行进一步的操作和处理。如果需要更详细的信息和示例代码,可以参考腾讯云的OpenSSL相关文档和示例代码:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

二十二.PE数字签名之(下)微软证书漏洞CVE-2020-0601复现及Windows验证机制分析

(1) 基础知识 ECC私钥+椭圆曲线=ECC (2) 漏洞成因 微软私钥+微软选椭圆曲线=微软根证书里面的 黑客私钥+黑客选椭圆曲线=微软根证书里面的 不同椭圆曲线和不同私钥,...win10默认添加了微软ECC根证书,在做证书验证时,会一直验证到微软根证书中hash值,这个值直接写在了crypt32.dll里面,验证时没有对比是不是同一个椭圆曲线,只对比了值,导致了黑客拿自己私钥签名...在正常标准椭圆曲线算法,基点G并不是随意指定,而是有固定值(标准文件会对基点G等参数选择做出规定),例如在secp256r1版本椭圆曲线算法,基点G应当为标准规定固定值,如果对参数不加验证...# 读取使用ECC算法证书 ca_key = ca.public_key # 证书中提取ca_key ca_key.private_key = 1 # 设置私钥为1,使得...”文件

2K31

openssl原理与操作

非对称加密算法 对文件或者消息加密时用一个密码,而解锁时需要用另一个密码,即非对称加密,两个密钥分别叫做「」、「私钥」 OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法...首先,OpenSSL实现了ASN.1证书和密钥相关标准,提供了对证书、、私钥、证书请求以及CRL等数据对象DER、PEM和BASE64编解码功能。...证书: 证书就是将我们和相关信息写入一个文件,CA用它们私钥对我们和相关信息进行签名后,将签名信息也写入这个文件后生成一个文件。...:指明生成私钥大小,默认是512; 而随后可利用rsa子命令生成私钥文件中提取,rsa子命令语法为: openssl rsa [-inform PEM|NET|DER] [-outform PEM...-dates:显示证书有效期开始和终止时间; -subject:输出证书subject; 7,pkcs12导出证书、秘和证书编号 •查看所有信息 openssl pkcs12 -info

60230

写给开发人员实用密码学 - 数字签名

在公开密钥算法,如果算法用于加密解密,也同样不能防止抵赖。因为在非对称加密算法是完全公开,私钥拥有者虽然能够解密,但是并不能确认是哪个客户端发送消息,这样任何人都可以抵赖。...在密码学,一个消息包含特殊指纹(数据),也可以起到现实世界指纹作用。具体做法是,私钥拥有者使用密钥签署一条消息,然后发送给任意接收方,接收方只要拥有私钥对应,就能成功反解签署消息。...国密数字签名算法 国密数字签名算法在《GM/T 0003.2-2012 SM2椭圆曲线密码算法第2部分:数字签名算法》这份文档中有详细描述。...其中签名流程为: image.png 国际上比较通用椭圆曲线数字签名算法成为 ECDSA,定义在 ANSI X9.63 这个标准文档。...在开发SM2数字签名算法时,我们可以参考《GM/T 0003.2-2012 SM2椭圆曲线密码算法第2部分:数字签名算法》这份文档附录A示例,保证每个步骤数据能对上,这样最终结果就不会出错。

71630

openssl安装与使用

目前,OpenSSL已经得到了广泛应用,许多类型软件安全部分都使用了OpenSSL库,VOIPOpenH323协议、Apache服务器、Linux安全模块等等。...,用xxd或者hexdump查看加密后内容以及解密后内容 4.3非对称加密命令 OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。...:标准输入获取要传递密码 4.3.2提取 用rsa子命令生成私钥文件中提取,rsa子命令语法为: openssl rsa [-inform PEM|NET|DER] [...当服务器向客户端发送数据时候,还附带上 CA 下载到本地证书,客户端拿到证书以后使用CA进行解密,确认服务器无误,最后用服务器解密。...测试: /*证书中提取*/ wuyujun@wuyujun-virtual-machine:~$ openssl x509 -in cacert.pem -pubkey >> public.key

3.4K10

三.CVE-2020-0601微软证书漏洞及Windows验证机制欺骗复现

crypt32.dll椭圆曲线加密算法实现问题,首先我们来了解一下椭圆加密算法基本原理。...基础知识 ECC私钥+椭圆曲线=ECC 漏洞成因 微软私钥+微软选椭圆曲线=微软根证书里面的 黑客私钥+黑客选椭圆曲线=微软根证书里面的 不同椭圆曲线和不同私钥,能产生一模一样...win10默认添加了微软ECC根证书,在做证书验证时,会一直验证到微软根证书中hash值,这个值直接写在了crypt32.dll里面,验证时没有对比是不是同一个椭圆曲线,只对比了值,导致了黑客拿自己私钥签名...ECC和RSA加密算法对比:椭圆曲线加密算法(ECC)和RSA同样是一种公开密钥加密技术,对原始数据以加密,以私钥解密,即便攻击者获取密文和也无法(在合理时间或代价下)解密获取明文。...在正常标准椭圆曲线算法,基点G并不是随意指定,而是有固定值(标准文件会对基点G等参数选择做出规定),例如在secp256r1版本椭圆曲线算法,基点G应当为标准规定固定值,如果对参数不加验证

3K51

再谈加密-RSA非对称加密理解和使用

数字证书 传输问题 在密文传输过程,客户端(Client C)向服务器(Server S)发送数据,C使用S加密,这样只有S使用自己私钥解密才能拿到信息,其他人即使得到了数据,没有S私钥也没用...数字证书是一个包含 证书拥有者、证书拥有者信息、证书认证中心数字签名文件。...文件openssl rsa -in rsa_private_key.pem -pubout -out pub.pem // 通过私钥生产 此外,介绍一下openssl提供一个测试加密速度小工具...-out pri.key // 密匙对文件获取到私匙。...opensll rsa -in key.key -pubout -out pub.key // 密匙对文件获取到匙; openssl pkcs8 -in pri.key -out repri.key

2.5K90

详解 RSA 非对称加密

数字证书 传输问题 在密文传输过程,客户端(Client C)向服务器(Server S)发送数据,C使用S加密,这样只有S使用自己私钥解密才能拿到信息,其他人即使得到了数据,没有S私钥也没用...数字证书是一个包含 证书拥有者、证书拥有者信息、证书认证中心数字签名文件。...这个不用担心,许多 CA 都有嵌入在浏览器根证书,所以浏览器能自动识别它们。在一些API交互请求支付宝接口时,我们已经在本地存储了支付宝证书了。...文件获取到密匙对文件,有时会需要密码 openssl pkcs12 -in source.pfx -nocerts -nodes -out key.key #密匙对文件获取到私匙。...opensll rsa -in key.key -out pri.key #密匙对文件获取到匙; opensll rsa -in key.key -pubout -out pub.key #java

1.6K20

非对称加密与安全证书看这一篇就懂了

常见算法有 RSA、DH(Diffie-Hellman)、椭圆曲线算法(Elliptic curve cryptography,ECC)。 非对称算法设计巧妙,但实际要结合对称加密使用。...本文重点是非对称加密及其衍生概念,下面逐一介绍。 、私钥和证书 除算法外,非对称加密另外两个重要概念是和私钥。对外公开,任何人均可持有和使用;私钥自行保管,其安全性是通信安危关键。...理论上有了和密钥,双方就可以安全无碍通信,那常说证书是怎么回事? 证书,顾名思义,就是证明文件。...遵循 X509 标准证书文件结尾多为 PEM、der、crt 等;遵循 PKCS 标准证书常用后缀名是 pfx、p12 等。 本次对接晕乎第二个地方是一处地方读取密钥需要密码,另一处直接读取。...两者加密文件在格式上有所差异,无法解开对方加密过文件OpenSSL 和 GPG 内置在大多数 *nix 系统,可直接使用。

1.7K30

椭圆曲线加密与NSA后门考古

假设通信双方还是Alice和Bob,则ECDH工作流程为: Alice和Bob使用同样椭圆曲线,并分别随机生成它们自己私钥和,其中Alice私钥为da,为Ha = da * G,Bob私钥和分别为...计算过程我们可以看到,s是与哈希*z*绑定,而*k*可以理解为一个临时私钥,用来生成临时*r*。...所以一般会根据标准NIST、SECG建议方式去选择预置曲线和随机数种子S,不同椭圆曲线有不同安全性、运算速度和不同长度。...h=1, ) ECC秘长度取决于所使用椭圆曲线,在大多数系统OpenSSL、OpenSSH和比特币默认ECC秘长度都是256位。...在OpenSSL预置曲线可见: https://github.com/openssl/openssl/blob/master/crypto/ec/ec_curve.c ECDSAk 在生成ECDSA

94350

CA证书介绍与格式转换

术语介绍 密钥对: 在非对称加密技术,有两种密钥,分为私钥和用来给数据加密,用加密数据只能使用私钥解密,是密钥对持有者公布给他人。...因此拿自己持有的对签名进行解密(密钥对一种密钥加密数据必定能使用另一种密钥解密。)...几个PEM证书,甚至私钥,可以包含在一个文件,一个在另一个文件之下,但是大多数平台(例如Apache)希望证书和私钥位于单独文件DER 格式 DER格式只是证书二进制形式,不含私钥。...文件扩展名通常是.cer,有时会有.der文件扩展名。 判断DER .cer文件和PEM .cer文件方法是在文本编辑器打开它,并查找BEGIN / END语句。...PKCS#12 / PFX 格式 PKCS#12 是加密标准,通用格式(rsa公司标准)。规定了可包含所有私钥、和证书。文件格式是加密过

4.4K10

非对称加密与安全证书看这一篇就懂了 转

常见算法有 RSA、DH(Diffie-Hellman)、椭圆曲线算法(Elliptic curve cryptography,ECC)。 非对称算法设计巧妙,但实际要结合对称加密使用。...本文重点是非对称加密及其衍生概念,下面逐一介绍。 、私钥和证书 除算法外,非对称加密另外两个重要概念是和私钥。对外公开,任何人均可持有和使用;私钥自行保管,其安全性是通信安危关键。...理论上有了和密钥,双方就可以安全无碍通信,那常说证书是怎么回事? 证书,顾名思义,就是证明文件。...遵循 X509 标准证书文件结尾多为 PEM、der、crt 等;遵循 PKCS 标准证书常用后缀名是 pfx、p12 等。 本次对接晕乎第二个地方是一处地方读取密钥需要密码,另一处直接读取。...两者加密文件在格式上有所差异,无法解开对方加密过文件OpenSSL 和 GPG 内置在大多数 *nix 系统,可直接使用。

1.4K20

PKI体系及常见证书

从属CA证书中和用于验证证书密钥是不相同。 CA/证书层级结构:PKI架构根CA开始,CA体系表现为自上而下层次结构。...PFX为PKCS#12前身. PKCS#13: Elliptic Curve Cryptography Standard. 椭圆曲线加密体系标准. 基于有限域椭圆曲线代数结构加密体系....,随着X.509证书版本升级到 v3,PKCS#6则被废弃;再如PKCS#12个人信息交换语义标准,定义了包含证书和个人私钥个人信息文件格式,其中证书部分则完全遵守X.509证书格式。...CA签名后生成.crt证书文件 .cer, .crt, .der : DER二进制编码X.509证书,不包含私钥 .pem : PEM Based64编码DER证书(或证书链,可包含私钥) ....换句话说,某一个证书,如果用户信任证书库存在着一条某个根CA到此证书完整证书链,则此证书受信;否则不被信任。

1.7K11

虾说区块链-48-《精通比特币》笔记三

脚本语言执行顺序:左至右执行每个项目。操作码(operators)堆栈推送或者弹出一个项目,处理后,将结果推送到堆栈上。...解锁脚本和锁定脚本匹配:在交易,执行组合验证脚本后bool值为true,说明hash值和私钥匹配。...k临时私钥、R临时x坐标、dA签名私钥、m交易数据、p椭圆曲线顺序。验证是签名生成函数倒数,使用R\S值和来计算一个P:P=s-1*Hash(m)G+s-1*R*Qa。...R/S签名值、Qa、m签署交易数据、G椭圆曲线发生器点。计算点P坐标等于R,则签名有效。...(椭圆曲线算法可参考区块链解读-椭圆曲线算法) 多重签名:n个记录在脚本、并且需要至少m个提供签名才能解锁资金,称为m-n方案,n是密钥总数,m是验证所需签名数量。

97180

Kubernetes 证书管理系列(一)

是公开,由长度来决定保护强度,但是信息会通过来加密。私钥只在接受者处秘密存储,接受者通过使用关联私钥才能解密读取信息。...椭圆曲线密码学 (ECC):Elliptic Curve Cryptography,是一种基于椭圆曲线数学公开密钥加密算法。它可以在保障跟 RSA 同等安全级别下,使用字符串长度更小。...目前常见编码模式有两种: 可分辨编码规则(DER):二进制格式,最常见,因为DER能处理大部分数据。DER编码证书是二进制文件,文本编辑器无法直接读取。...,这是一种加密电子邮件编码规则,可将DER编码证书转换为文本文件。...img 使用 openssl 以文本模式打开一份 apiserver.crt 证书: img 说明: Serial Number 序列号,它是一个大端数字,也是唯一标识符。

1.8K20

Golang与非对称加密

pubBlock, _ := pem.Decode([]byte(publicKey)) // 读取 pubKeyValue, err := x509.ParsePKIXPublicKey(...// 获取, 生产环境往往是文件读取, 这里为了测试方便, 直接生成了....,硬件实现也变得越来越难以忍受,这对使用RSA应用带来了很重负担,因此需要一种新算法来代替RSA 1985年N.Koblitz和Miller提出将椭圆曲线用于密码算法,根据是有限域上椭圆曲线点群离散对数问题..., 2013 年爱德华·斯诺登曝光棱镜计划后,该算法突然大火,大量软件,OpenSSH都迅速增加了对25519系列支持,如今25519已经是大势所趋,可疑NIST曲线迟早要退出椭圆曲线历史舞台,...比如SET协议制定者已把它作为下一代SET协议缺省密码算法 6、ECDSA 因为在数字签名安全性高, 基于ECCDSA更高, 所以非常适合数字签名使用场景, 在SSH TLS有广泛使用,

1.1K40

ECDH椭圆曲线(比DH快10倍密钥交换)算法简介和封装

ECDH和DH 使用ECDH做密钥交换得时候你可能也会看到ECDHE这个词,这个多出来E意思是指每次都随机生成。因为像HTTPS里那种是可以证书文件里取静态。...我封装接口其实也是每次都随机生成。 适配和接入 我这里选择了按RFC 4492进行接入,因为我主要适配两个库(openssl和mbedtls)共同支持似乎只有RFC 4492。...ID,1字节Q长度,Q 客户端读取系数 读入P、G,记录GY为远端 读入双曲线算法group,记录Q为远端 客户端创建 随机出X,计算并上传GX(G^X mod P),保留私有数据X 生成和上传点...ID等) util::crypto::dh svr_dh; // 服务器 - init: 读取指定椭圆曲线 { util::crypto::dh::shared_context...,输出双曲线ID和点 CASE_EXPECT_EQ(0, svr_dh.make_params(switch_params)); // step 2 - 客户端: 读取服务器曲线

5.1K30

SSLTLS 双向认证(一) — SSLTLS 工作原理

server.key/server.pub // 私钥加密,解密! server.pub 生成一个请求文件 server.req....请求文件包含有 server 一些信息,域名/申请者/等 server 将请求文件 server.req 递交给 CA 机构,CA 机构验明正身后,将用 ca.key 和请求文件加密生成 server.crt...(图一 server.req 就是 csr 请求文件) 2)审核信息:CA 机构通过线上、线下等多种手段验证申请者提供信息真实性,组织是否存在、企业是否合法,是否拥有域名所有权等。...(图一 handshake 传回 server.crt) 5)client验证证书:client 读取证书中相关明文信息,采用相同散列函数计算得到信息摘要,然后,利用对应 CA 解密签名数据...如何查看证书中有什么 证书中含有 申请者、申请者组织信息和个人信息、签发机构 CA 信息、有效时间、证书序列号等信息明文,同时包含一个签名。查看百度证书详细信息。

5.9K10
领券