我们知道使用openssl命令行openssl rsa -in test_priv.pem -text
即可实现从私钥PEM文件中提取私钥因子:n/e/d/p/q/dp/dq/qp.
那么如何用C语言实现呢?如何在代码中实现呢?
#include <stdio.h>
#include <stdlib.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>int main() {const char *filename = "test_priv.pem"; // 替换为你的PEM文件路径// 打开PEM文件FILE *file = fopen(filename, "r");if (!file) {perror("Error opening file");return 1;}// 从PEM文件中读取RSA私钥RSA *rsa_private_key = PEM_read_RSAPrivateKey(file, NULL, NULL, NULL);fclose(file);if (!rsa_private_key) {ERR_print_errors_fp(stderr);return 1;}// 输出私钥信息printf("RSA Private Key:\n");RSA_print_fp(stdout, rsa_private_key, 0);// 释放私钥内存RSA_free(rsa_private_key);return 0;
}
编译命令: gcc main.c -o x -lssl -lcrypto