以下是使用openssl库进行DER和PEM格式转换的示例代码:

#include <openssl/pem.h>
#include <openssl/rsa.h>

int main() {
    // 读取DER格式的公钥文件
    FILE *der_file = fopen("public_key.der", "rb");
    if (!der_file) {
        printf("Failed to open DER file.\n");
        return 1;
    }
    RSA *rsa_key = d2i_RSA_PUBKEY(NULL, (const unsigned char **)&der_file, filesize(der_file));
    fclose(der_file);

    // 将公钥转换为PEM格式
    BIO *bio = BIO_new(BIO_s_mem());
    if (!PEM_write_bio_RSA_PUBKEY(bio, rsa_key)) {
        printf("Failed to convert public key to PEM format.\n");
        return 1;
    }
    char *pem_key;
    long pem_key_length = BIO_get_mem_data(bio, &pem_key);

    // 将PEM格式的公钥保存到文件中
    FILE *pem_file = fopen("public_key.pem", "wb");
    if (!pem_file) {
        printf("Failed to open PEM file.\n");
        return 1;
    }
    fwrite(pem_key, 1, pem_key_length, pem_file);
    fclose(pem_file);

    RSA_free(rsa_key);
    BIO_free(bio);
    return 0;
}

其中,d2i_RSA_PUBKEY()函数可以将DER格式的公钥文件读取到RSA结构体中;PEM_write_bio_RSA_PUBKEY()函数可以将RSA结构体中的公钥转换为PEM格式,并保存到BIO结构体中;BIO_get_mem_data()函数可以获取BIO结构体中保存的PEM格式公钥的指针和长度;最后将PEM格式公钥保存到文件中即可。其他格式的转换方式类似。

如何使用openssl der和pem进行转换请使用c语言

原文地址: https://www.cveoy.top/t/topic/OLy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录