tôi tạo ra một riêng và khóa công khai với các lệnh sau:Cách tải bằng Python-RSA một khóa RSA công khai từ một tệp được tạo bằng openssl?
openssl genrsa -out private_key.pem 512
openssl rsa -in private_key.pem -pubout -out public_key.pem
sau đó tôi đã cố gắng để tải chúng với một kịch bản python sử dụng 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"
script python của tôi thất bại khi nó cố gắng tải khóa công khai:
ValueError: No PEM start marker "-----BEGIN RSA PUBLIC KEY-----" found
Tôi nghĩ vấn đề là định dạng của khóa công khai. Nếu bạn nhìn kỹ, tiêu đề trên khóa công khai được tạo ra mở ra là "----- BEGIN KHÓA CHÍNH -----". Định dạng là X509 SubjectPublicKeyInfo. Phương pháp bạn đang sử dụng đang tìm kiếm định dạng PKCS1 với tiêu đề "----- BEGIN RSA PUBLIC KEY -----". – gtrig
Bạn có thể cho chúng tôi biết cách chuyển đổi X509 thành PKCS1 không? – fengxing