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.