加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在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");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读