Implementación del lenguaje C: extraiga los factores de clave pública y privada del archivo sm2 PEM

Sabemos que usar la línea de comando de openssl para extraer la clave pública y el factor de clave privada del pem del secreto nacional sm2 es el siguiente:

  • openssl ec -in sm2_test_priv.pem -text -nooutExtraer la clave privada de la clave privada pem
  • openssl ec -pubin -in sm2_test_pub.pem -text -nooutExtraer la clave pública de la clave pública pem

Tomando como ejemplo la extracción de clave privada, ¿cómo implementar la parte anterior en lenguaje C? El siguiente es un ejemplo de referencia escrito para todos:

#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;
}

Comando de compilación:gcc main.c -o x -lssl -lcrypto

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_42135087/article/details/132465850
Recomendado
Clasificación