我产生了私人和使用以下命令公钥:如何使用openssl生成的文件在Python-RSA中加载公共RSA密钥?
openssl genrsa -out private_key.pem 512
openssl rsa -in private_key.pem -pubout -out public_key.pem
然后我试着使用Python的RSA python脚本来加载它们:
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"
我的Python脚本失败时,它试图加载公钥:
ValueError: No PEM start marker "-----BEGIN RSA PUBLIC KEY-----" found
我认为这个问题是公钥的格式。如果仔细观察,openssl生成的公钥的标题是“----- BEGIN PUBLIC KEY -----”。格式是X509 SubjectPublicKeyInfo。您正在使用的方法是寻找带有“----- BEGIN RSA PUBLIC KEY -----”标头的PKCS1格式。 – gtrig 2013-06-19 21:04:37
你会告诉我们如何将X509转换为PKCS1有限? – fengxing 2013-08-22 06:42:29