Openssl X509证书从HexStream中解析

2024-05-11 07:12

本文主要是介绍Openssl X509证书从HexStream中解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

整体思路

hex 转换成字节流

然后从字节流中进行解析

You have access to the raw certificate in memory.

In the case that you have access to the raw encoding of the certificate in memory, you can parse it as follows. This is useful if you have stored raw certificates in a database or similar data store.

#include 
#include 
#include const unsigned char *data = ... ;
size_t len = ... ;X509 *cert = d2i_X509(NULL, &data, len);
if (!cert) {fprintf(stderr, "unable to parse certificate in memory\n");return EXIT_FAILURE;
}// any additional processing would go here..X509_free(cert);

std::string hex_str = "30820317308201ffa003020102021432e1f.....";// hex -> binaryData
std::vector<uint8_t> binaryData;
for (size_t i = 0; i < hex_str.size(); i += 2) {unsigned int byte;sscanf(hex_str.substr(i, 2).c_str(), "%02X", &byte);binaryData.push_back(byte);
}// 将 char* 转换为 unsigned char*
const unsigned char* uchar_ptr = binaryData.data();size_t len = binaryData.size();
X509 *cert  = d2i_X509(NULL,&uchar_ptr,len);if (!cert) {printf("Failed to load certificate from bytes\n");return 1;
}// 打印证书信息
X509_print_fp(stdout, cert);// 释放资源
X509_free(cert);

使用CryptoPP 解析

使用 CryptoPP 库进行解析

   std::string hex_str = "30820317308201ffa003020102021.....";std::string binaryData;CryptoPP::StringSource(hex_str, true,new CryptoPP::HexDecoder(new CryptoPP::StringSink(binaryData)));CryptoPP::ByteQueue googleq, thawteq, googletbs, thawtespki;CryptoPP::SecByteBlock certSignature;googleq.Put((const CryptoPP::byte*)binaryData.data(), binaryData.size());CryptoPP::X509Certificate cert;cert.Load(googleq);// 获取公钥const CryptoPP::PublicKey& publicKey = cert.GetSubjectPublicKey();// 如果你确定证书的类型是 RSA,你可以将 PublicKey 强制转换为 RSA 公钥const CryptoPP::RSA::PublicKey& rsaPublicKey = dynamic_cast<const RSA::PublicKey&>(publicKey);// 获取 RSA 模数const CryptoPP::Integer& modulus = rsaPublicKey.GetModulus();// 打印公钥信息std::cout << "Public Key: " <<rsaPublicKey.GetPublicExponent()<< std::endl;// 打印 RSA 模数std::cout << "RSA Modulus: " << modulus<< std::endl;

这篇关于Openssl X509证书从HexStream中解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷