如何使用openssl der和pem进行转换请使用c语言
以下是使用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格式公钥保存到文件中即可。其他格式的转换方式类似。
原文地址: https://www.cveoy.top/t/topic/OLy 著作权归作者所有。请勿转载和采集!