primos numeros encryption openssl primes

encryption - numeros primos



generaciĆ³n de primos seguros (2)

Estoy de acuerdo con los comentarios hechos por @Luke. Sin embargo, si por alguna razón debe usar las líneas de comando de openssl, hay algunas opciones, pero solo le ayudarán a llegar tan lejos. Ninguno de estos le hará ninguna aritmética significativa; no recuperarán (p-1) / 2 y comprobarán que sea primordial.

Puede usar el comando openssl dh y analizar el resultado. Pruébelo con y sin la opción -C para ver cuál funciona mejor para usted. Ejemplos.

openssl gendh -out testdh.pem 1024 openssl dh -in testdh.pem -noout -C openssl dh -in testdh.pem -noout

Si puede manejar o prefiere el binario, entonces puede analizar la salida binaria para la estructura DH codificada DER.

openssl dh -in testdh.pem -outform der -out testdh.der

Otra opción es analizar el resultado del comando ans1parse:

openssl asn1parse -in testdh.pem

Necesito generar un primo seguro que tenga la forma 2p + 1, donde p también es primo de cierta longitud de bit (digamos 1024 bits). Se debe usar en un intercambio de claves DH.

Creo que openssl puede hacer esto a través de

openssl gendh 1024

Sin embargo, este retorno es un formato base64 pem

-----BEGIN DH PARAMETERS----- MIGHAoGBANzQ1j1z7RGB8XUagrGWK5a8AABecNrovcIgalv1hQdkna2PZorHtbOa wYe1eDy1t/EztsM2Cncwvj5LBO3Zqsd5tneehKf8JoT35/q1ZznfLD8s/quBgrH8 es2xjSD/9syOMMiSv7/72GPJ8hzhLrbTgNlZ+kYBAPw/GcTlYjc7AgEC -----END DH PARAMETERS-----

  • ¿Cómo puedo extraer el número primo seguro de esta peche base64?

  • ¿es más fácil generar mi propia prima segura con mi propio código?

¿Cómo puedo probar que un primo es "seguro" y de cierta longitud de bit?


@GregS tiene un enfoque que probablemente funcione para usted. De acuerdo con lo que me ha dicho, simplemente crearía un C binario y aprovecharía la función BN_generate_prime(...) en OpenSSL. Eso corta todo el análisis intermedio y, a pesar de agregar un binario por separado en la mezcla, es probablemente más fácil que el camino al que te diriges.