C++获取数字证书的序列号

Openssl学习——x509证书函数 文章目录1.X509概览1.1简介1.2结构 1.X509概览 1.1简介 X.509标准是密码学里公钥证书的格式标准。X.509 证书己应用在包括TLS/SSL(WWW万维网安全浏览的基石)在内的众多 Internet协议里,同时它也有很多非在线的应用场景,比如电子签名服务。X.509证书含有公钥和标识(主机名、组织或个人),并由证书颁发机构(CA)签名(或自签名)。一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息一种非常通用的证书格式,所有的证书都符合X.509 国际 阅读详情

C++获取数字证书的序列号

目录

我们需要准备一个二进制的证书实体 或是 CRL,给出的例子可以直接解析出证书的序列号,而不需要通过任何的第三方的接口例如:openssl 、CryptoAPI

通过看ASN.1 得知:

  • INTEGER 为任意一个整数 该标记码为 0x02
  • asn.1这规范一般标记码后面是 长度

了解到证书的序列号的长度为 32字节 的十六进制的字符串
二进制的长度为16字节

举个证书序列号的栗子:

序列号 : ‎21 11 78 53 0b 64 aa 92 13 45 59 cd 49 f4 d8 c1

以下是一个简单的例子


/*
@作者:天空中的一米阳光
@由于我的环境是VS 2010 故用了fopen_s方法和sprintf_s方法
*/
#include<iostream>
#include<string>
using namespace std;

int main()
{
    FILE *fp = NULL;
    int iDataLen = 0;
    unsigned char* crlData = NULL;
    errno_t err;

//这里我是用的CRL ,用.cer的证书实体也是一样的
    err = fopen_s(&fp,"crl.crl","rb+");
    if (err!=0)
    {
        cout<<"File wasn't opened"<<endl;
        return -1;
    }
    fseek(fp,0L,SEEK_END);
    iDataLen = ftell(fp); //获取文件的大小
    fseek(fp,0L,SEEK_SET);

    crlData = new unsigned char[iDataLen+1];
    memset(crlData,0x00,iDataLen+1);

    fread(crlData,sizeof(unsigned char),iDataLen,fp);

    int iCount = 0;
    int i = 0;
    iCount = iDataLen;
    for ( i = 0;i<iDataLen;i++)
    {
        if (crlData[i]==2)
        {
            if (crlData[i+1]==16)
            {
                string strNum;
                for (int j = 0;j<16;j++)
                {
                    char str[3] = {0};
                    sprintf_s(str,3,"%02x",crlData[i+2]);//将二进制的数据转变为十六进制的字符串
                    strNum += str;
                    i++;
                }
                cout<<strNum<<endl;
            }else{
                continue;
            }
        }
    }

    fclose(fp);
    delete[] crlData;
    crlData = NULL;
    return 0;
}

转载请声明本文作者为:天空中一米阳光


深入解析mq4cpp v1.16:C++消息中间件源码与网络编程实战 消息队列(Message Queue)作为分布式系统解耦与异步通信的核心组件,其工作原理基于生产者-消费者模型,通过消息路由、服务发现等机制实现可靠传输。在技术实现层面,高性能网络编程常采用Reactor模型配合I/O多路复用(如epoll)处理高并发连接,而协议编解码层则需解决TCP粘包/拆包问题。这些基础技术共同支撑了消息中间件在微服务、大数据处理等场景下的应用价值。本文以mq4cpp v1.16开源项目为例,通过源码剖析其**消息路由**与**服务发现**等核心模块的实现,展示如何用现代C++构建高可 阅读详情

相关推荐

使用国密函数读取金税盘信息

针对支持国密算法USB KEY设备的应用,国家颁布了相应的行业标准,而航天税控发票开票程序无论是2.0版还是3.0版都提供了国密算法模块,通过调用国密算法模块中相应函数,我们就可以获取相应的信息。

WackMan的专栏 1314

获取文件数字签名证书信息

验证文件数字签名是否有效可以使用函数 WinVerifyTrust 取得文件数字签名证书信息需要使用函数 CryptQueryObject。// FileSign.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include #include #include #pragma comment(lib, "

云守护的专栏 1万+

利用Intel CPU序列号构建硬件级加密与软件授权绑定方案

在信息安全领域,密钥管理是核心挑战之一。传统软件密钥存储易受攻击,而硬件安全模块(HSM)和可信平台模块(TPM)提供了硬件级保护,但成本较高。本文探讨一种轻量级替代方案:利用硬件唯一标识构建安全信任根。其原理是通过采集CPU序列号、主板信息等硬件特征,生成综合硬件指纹,并以此作为密钥派生函数(KDF)的盐值或软件授权绑定的唯一标识。该技术的核心价值在于实现“一机一密”,为软件授权、数据加密提供硬件绑定基础,有效防止软件非法克隆与数据泄露。应用场景涵盖边缘计算设备认证、物联网节点身份验证与软件版权保护。本文

anmishi2025的博客 369

文件数字签名校验与信息获取

方法一、二兼容XP,三不兼容XP。 方法一: /* * An example of file signature verification using WinTrust API * Derived from the sample vertrust.cpp in the Platform SDK * * Copyright (c) 2009 Mounir IDRASSI . Al

c/c++、x86汇编、Win32汇编、逆向、破解 7045

深入解析数字证书结构与OpenSSL实战应用

数字证书是公钥基础设施(PKI)的核心组成部分,用于绑定公钥与实体身份,确保通信双方的身份可信。其遵循国际标准X.509,定义了证书的结构、编码方式及生命周期管理机制。X.509证书通常采用ASN.1语法描述,并以DER或PEM格式存储——前者为二进制编码,后者为Base64编码加头部尾部标识,便于文本传输与解析。证书包含关键字段如版本号、序列号、签名算法标识、发行者、有效期、主体和公钥信息等,各字段均按严格规范组织。

weixin_36197669的博客 873

C++编程语言的证书处理实战教程

证书,更准确地说是“数字证书”,其目的在于解决互联网上的信任问题。在传统的面对面交流中,我们可以依靠视觉识别来验证对方的身份。然而,在虚拟的网络空间,这样的直接信任关系是不存在的。数字证书提供了一个技术手段来建立这种信任关系,它通过第三方权威机构(认证中心,简称CA)进行身份认证,并发放证书。OpenSSL项目提供了一个开源的软件库,能够实现SSL和TLS协议,提供端到端的安全性。它实现了多种加密算法和工具,适用于多种平台和编程语言。主要组件包括:加密库。

weixin_35754962的博客 1080

关于网络安全通过c++实现CA证书相关总结

CryptoAPI openssl RSA

ghevinn欢迎您光临 4034

获取数字签名信息

rt 获取数字签名信息 dll 接口 vc

C语言获取证书序列号的函数,Openssl 怎么样获取ECC sm2证书公钥数据

本人现在通过调用x509系列API接口函数可以解析sm2证书,获取出证书的信息例如:序列号,CN值等,但是获取公钥数据时出错。直接上代码吧EVP_PKEY*pubKey;X509*x509Cert=NULL;x509Cert=d2i_X509(NULL,usrCertificate,usrCertificateLen);//获取证书版本,能正确获取到值Version=X509_...

weixin_35735685的博客 1717

VC++6.0番茄西红柿VAX(virsual assist X)完美版及行号插件支持win7

VC++6.0番茄西红柿VAX(virsual assist X)完美版及行号插件支持win7,压缩包里有详细的使用说明

GenomeSurvyIndex设计--随笔017

摘要: GenomeSurvyIndex是一款自动化多倍体基因组调查工具,整合FastK、Smudgeplot和GenomeScope2.0三大核心组件。该工具通过k-mer频谱特征自动识别基因组倍性类型,包括二倍体(1:2:4)和同源四倍体(1:2:3:4),并采用3a1b>2a2b算法判定同源/异源多倍体。工具提供完整的conda环境配置方案,封装为Python脚本实现全流程自动化分析,包含k-mer计数、倍性判定、基因组特征计算等功能,最终输出标准化报告和可视化图表。该方案可直接部署使用,适用于

weixin_44874487的博客 474

openssl 证书解析

简单实用例子 openssl 解析x509证书 命令行打印证书细节: openssl x509 -noout -text -in cert.crt sudo apt-get install libssl-dev #debian based yum install openssl-devel #redhat based compile...

andylau00j的专栏 3357

微信中调起支付宝支付

微信中调用支付宝支付,首先我们知道微信是不能直接调用支付宝的,所以我们需要使用一个中间页提示用户在浏览器中打开,然后进行网页支付或打开app支付。以下为详细唤起支付宝的步骤、业务代码以及相关页面图。 如有问题欢迎评论留言,看到定回复哦^_^\(^o^)/~ 一、微信中唤起支付宝,有几个步骤: 1、中间页引导用户在浏览器中打开去唤起支付宝。 2、浏览器中打开支付宝或app中打开支付宝。 3...

han_calligrapher的博客 2万+

基于visual c++之windows核心编程代码分析(46)遍历数字证书

数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一

尹成的技术博客 3978

计算机组成原理(第三版)唐朔飞-第十章控制单元的设计-课后习题

计算机组成原理(第三版)唐朔飞-第十章控制单元的设计-课后习题

weixin_45735391的博客 3万+

【生信分析】clusterProfiler: universal enrichment tool for functional and comparative study(1)

clusterProfiler: universal enrichment tool for functional and comparative studyClusterProfiler: 用于功能和比较研究的通用富集工具总览1. 引言1.1 术语1.1.1 基因集和通路1.1.2 基因同源(GO)1.1.3 京都基因与基因组百科全书(KEGG)1.1.4 其他基因集2. 功能富集分析方法2.1 过度表征分析(Over Representation Analysis)2.2 基因集富集分析(Gene Se

小哲的博客 1365

VC++网络安全编程范例(1)--数字证书有效期验证

数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authorit y)中心发行的,人们可以在网

尹成的技术博客 5706

杰理外挂flash使用教程(三): 打包提示音到外部flash(2)

本教程详细介绍了提示音制作与程序配置的全流程规范。提示音制作要求包括:英文命名(8字符内)、单声道转换、标准目录结构(cpu/br23/tools/)及使用user_tone_g.bat脚本生成res.bin资源文件。程序配置需修改:1)启用NOR_FS文件系统;2)调整存储空间;3)配置外置Flash参数;4)增强下载脚本追加资源参数。测试阶段建议替换开机提示音验证功能,扩展开发可参考tone_player.c的索引播放逻辑。所有操作均配有图示说明,关键配置需修改对应头文件和脚本参数。

qq_42014563的博客 587

数字证书结构描述+解析的C程序设计和实现

文章目录1 X.509 证书结构描述1.1 整体结构1.2 证书内容1.3 编码2 源代码3 编译运行结果 1 X.509 证书结构描述 1.1 整体结构 证书内容、签名算法、签名结果。 tbsCertificate TBSCertificate signatureAlgorithm AlgorithmIdentifier signatureValue BIT STRING ...

Runner1st的博客 2878

Dify智能体开发:大语言模型(LLM)问题分类

通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。

王国平的博客 2249

PCL 基于超体素的点云分割【2024最新版】

点云超体素分割原理介绍、代码实现以及如何做到将每一个超体素内的点进行单独保存而不造成点云缺失的方法。博客长期更新,本文最近一次更新时间为:2024年12月29日。

点云侠的博客 36万+

X.509数字证书的结构与解析

X.509数字证书的结构与解析 1、什么叫数字签名 数字签名: 将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。 将该报文摘要值用发送者的私人密钥加密,然后连同原报文一起发送给接收者,而产生的报文即称数字签名 2、什么叫数字证书 数字证书: 数字证书...

weixin_38168728的博客 1078

基于STM32L4XX 、HAL库的SGM452B数字温度传感器驱动应用C语言程序设计

SGM452B_RESOLUTION_12BIT = SGM452B_CONFIG_R1 | SGM452B_CONFIG_R0 /* 12位分辨率,精度0.0625°C,转换时间200ms */SGM452B_RESOLUTION_11BIT = SGM452B_CONFIG_R1, /* 11位分辨率,精度0.125°C,转换时间100ms */SGM452B_RESOLUTION_10BIT = SGM452B_CONFIG_R0, /* 10位分辨率,精度0.25°C,转换时间50ms */

PP_Cottage的博客 327

openssl - 数字证书的编程解析

  原文链接: http://www.cangfengzhe.com/wangluoanquan/37.html 这篇文章主要介绍PKI公钥体系中非常核心元素——数字证书的编程解析。在SSL,SET等安全协议通信时,数字证书用于通信双方进行身份认证,并且依靠数字证书和非对称加密算法加密传输数据,或者根据数字证书协商通信双方的共享密钥。所以,用户想要开发自己的应用,实现身份认证,必须对数字证书进...

weixin_34160277的博客 322

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

X.509证书解析程序(C++版)

这个解析程序使用C++写成,更多详细内容可参考GitHub项目。 X.509证书结构 Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, -- 证书主体 signatureAlgorithm AlgorithmIdentifier, ...

ZTao-z的博客 5728

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值