在C中打开SSL证书指纹
发布时间:2020-12-16 09:38:34 所属栏目:百科 来源:网络整理
导读:我正在使用来自C的OpenSSL生成自签名证书.我的代码主要基于demos / X509文件夹(在OpenSSL中)中的示例演示代码,并且正常工作. 我需要从我的C代码生成我的证书(和X509结构)的指纹以供以后验证,但OpenSSL文档有点缺乏,我还没有设法解决如何做到这一点.我一直在
我正在使用来自C的OpenSSL生成自签名证书.我的代码主要基于demos / X509文件夹(在OpenSSL中)中的示例演示代码,并且正常工作.
我需要从我的C代码生成我的证书(和X509结构)的指纹以供以后验证,但OpenSSL文档有点缺乏,我还没有设法解决如何做到这一点.我一直在寻找信息,我找到的就是如何使用命令行中的OpenSSL来完成它. 谢谢你的建议! 解决方法
您可以使用openssl加密API生成哈希.请参阅
http://www.openssl.org/docs/crypto/EVP_DigestInit.html的openssl加密文档.以下是示例程序.使用您的PEM证书文本替换以下程序中的示例文本.
#include <stdio.h> #include <openssl/evp.h> main(int argc,char *argv[]) { EVP_MD_CTX mdctx; const EVP_MD *md; char mess1[] = "Test Messagen"; char mess2[] = "Hello Worldn"; unsigned char md_value[EVP_MAX_MD_SIZE]; int md_len,i; OpenSSL_add_all_digests(); if(!argv[1]) { printf("Usage: mdtest digestnamen"); exit(1); } md = EVP_get_digestbyname(argv[1]); if(!md) { printf("Unknown message digest %sn",argv[1]); exit(1); } EVP_MD_CTX_init(&mdctx); EVP_DigestInit_ex(&mdctx,md,NULL); EVP_DigestUpdate(&mdctx,mess1,strlen(mess1)); EVP_DigestUpdate(&mdctx,mess2,strlen(mess2)); EVP_DigestFinal_ex(&mdctx,md_value,&md_len); EVP_MD_CTX_cleanup(&mdctx); printf("Digest is: "); for(i = 0; i < md_len; i++) printf("%02x",md_value[i]); printf("n"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |