python openssl rsa pem

¿Cómo cargar en Python-RSA una clave RSA pública a partir de un archivo generado con openssl?



pem (3)

Python-RSA utiliza el formato PEM RSAPublicKey y el formato PEM RSAPublicKey utiliza las líneas de encabezado y pie de página: openssl NOTAS

----- COMIENCE LA LLAVE PÚBLICA DE RSA ----- ----- END CLAVE PÚBLICA DE RSA -----

Salida de la parte pública de una clave privada en formato RSAPublicKey: openssl EJEMPLOS

openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem

Genere una clave privada y una pública con los siguientes comandos:

openssl genrsa -out private_key.pem 512 openssl rsa -in private_key.pem -pubout -out public_key.pem

Luego traté de cargarlos con un script python usando Python-RSA:

import os import rsa with open(''private_key.pem'') as privatefile: keydata = privatefile.read() privkey = rsa.PrivateKey.load_pkcs1(keydata,''PEM'') with open(''public_key.pem'') as publicfile: pkeydata = publicfile.read() pubkey = rsa.PublicKey.load_pkcs1(pkeydata) random_text = os.urandom(8) #Generate signature signature = rsa.sign(random_text, privkey, ''MD5'') print signature #Verify token try: rsa.verify(random_text, signature, pubkey) except: print "Verification failed"

Mi secuencia de comandos python falla cuando intenta cargar la clave pública:

ValueError: No PEM start marker "-----BEGIN RSA PUBLIC KEY-----" found


Si está en Python3, también debe abrir la tecla en modo binario, por ejemplo:

with open(''private_key.pem'', ''rb'') as privatefile: