我產生了私人和使用以下命令公鑰:如何使用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