PyCrypto: Generar clave RSA protegida con contraseña DES3

He podido crear una clave RSA protegida por contraseña con DES3 (bueno … creo que porque soy muy nuevo en este mundo de encriptación) usando el comando:

openssl genrsa -out "/tmp/myKey.pem" -passout pass:"f00bar" -des3 2048 

Ahora, me gustaría hacer eso dentro de un script de Python, utilizando PyCrypto, si es posible. He visto este mensaje , que parece desalentar el uso de PyCrypto para hacer eso. ¿Sigue siendo así?

Por supuesto, siempre puedo llamar a os.execute y ejecutar el comando anterior, pero lo consideraría “trampa” 🙂 . Estoy haciendo mucho para aprender PyCrypto.

Gracias de antemano.

A partir de PyCrypto 2.5, puede exportar una clave privada RSA y tenerla protegida por una frase de contraseña. Una clave Triple DES se deriva internamente de la frase de contraseña y se utiliza para realizar el cifrado real.

Por ejemplo:

 from Crypto import RSA from Crypto import Random random_generator = Random.new().read key = RSA.generate(1024, random_generator) exportedKey = key.exportKey('PEM', 'my secret', pkcs=1) 

La variable exportedKey contiene una versión ASCII (PEM) de la clave, codificada según PKCS # 1 (un estándar criptográfico. Otra opción es pkcs=8 para – adivina qué – PKCS # 8). Ya que el resultado es estándar, puede usarlo con varios otros progtwigs, incluyendo openssl. Y, por supuesto, también puede volver a importarlo en Python a través de PyCrypto.

El método exportKey se documenta aquí .