¿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:
Puede generar clave privada mediante ssh-keygen:
ssh-keygen -t rsa
y generar una clave pública como esta:
ssh-keygen -e -m pem -f xxx > pubkey.pem
http://blog.oddbit.com/2011/05/08/converting-openssh-public-keys/