ich einen privaten erzeugt und einen öffentlichen Schlüssel mit den folgenden Befehlen:Wie in Python-RSA ein öffentlicher RSA-Schlüssel aus einer mit openssl erzeugten Datei geladen werden?
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"
Mein Python-Skript schlägt fehl, wenn es:
openssl genrsa -out private_key.pem 512
openssl rsa -in private_key.pem -pubout -out public_key.pem
ich sie mit einem Python-Skript mit Python-RSA dann zu laden versucht versucht, den öffentlichen Schlüssel zu laden:
ValueError: No PEM start marker "-----BEGIN RSA PUBLIC KEY-----" found
ich glaube, das Problem ist das Format des öffentlichen Schlüssels ist. Wenn Sie genau hinsehen, lautet der Header des von openssl generierten öffentlichen Schlüssels: "----- BEGIN PUBLIC KEY -----". Das Format ist X509 SubjectPublicKeyInfo. Die von Ihnen verwendete Methode sucht nach dem PKCS1-Format mit einer Kopfzeile von "----- BEGIN RSA PUBLIC KEY -----". – gtrig
Möchten Sie uns mitteilen, wie Sie X509 in PKCS1 foramt konvertieren? – fengxing