我通过以下命令使用 OpenSSL 生成了私钥和公钥:
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
原文由 Amine Kerkeni 发布,翻译遵循 CC BY-SA 4.0 许可协议
Python-RSA 使用 PEM RSAPublicKey 格式,PEM RSAPublicKey 格式使用页眉和页脚行: openssl NOTES
以 RSAPublicKey 格式输出私钥的公共部分:openssl EXAMPLES