如何从文件中将公共 RSA 密钥加载到 Python-RSA 中?

新手上路,请多包涵

我通过以下命令使用 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 许可协议

阅读 1.4k
2 个回答

Python-RSA 使用 PEM RSAPublicKey 格式,PEM RSAPublicKey 格式使用页眉和页脚行: openssl NOTES

 -----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----

以 RSAPublicKey 格式输出私钥的公共部分:openssl EXAMPLES

  openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem

原文由 Googuez 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果在 Python3 上,还需要以二进制方式打开密钥,eg:

 with open('private_key.pem', 'rb') as privatefile:

原文由 Kimvais 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题