Genera un par de primos grandes con la biblioteca openssl en c

0

Soy nuevo en la biblioteca openssl y, por lo que pude entender, es posible generar números primos grandes, por ejemplo, 512 bits utilizando el argumento de la línea de comando: openssl prime -generate -bits 512 . Pero no estoy seguro de cómo puedo hacer esto usando un código C?

Intenté usar el comando system() para generar un primo usando el siguiente código:

int main()
{
  char c[50];
  strcpy(c, "openssl prime -generate -bits 512");
  long long p = system(c); // IS THIS POSSIBLE??
  return 0;
 }

Pero he leído que hay algunas preocupaciones de seguridad en esto como se da en este enlace here

Por lo tanto, es posible escribir este número primo grande generado en un archivo de texto o algo así, para poder usarlo más adelante en mi código.

Mi motivo final es generar dos números primos grandes de 512 bits de orden.

    
pregunta skii 05.01.2018 - 05:29
fuente

1 respuesta

0

Si desea saber cómo puede hacer la funcionalidad de openssl prime -generate en el código C, eche un vistazo al código fuente de OpenSSL, que es de código abierto y de fácil acceso. Específicamente, eche un vistazo a apps / prime.c que implementa openssl prime . Allí puede ver que BN_generate_prime_ex se utiliza para generar el principal:

if (generate) {
    ...
    bn = BN_new();
    ...
    if (!BN_generate_prime_ex(bn, bits, safe, NULL, NULL, NULL)) {
        BIO_printf(bio_err, "Failed to generate prime.\n");
        goto end;
    }
    
respondido por el Steffen Ullrich 05.01.2018 - 07:16
fuente

Lea otras preguntas en las etiquetas