如何将字符串转换为" BEGIN RSA PUBLIC KEY"的格式?

时间:2016-04-28 07:43:02

标签: python rsa

我正在模拟登录网站,服务器反馈一个" pubkey"用于RSA加密。我应该用" pubkey"加密我的密码。内容是:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWgW3gsfqzrID7Bz+pfcHD1TMP
CFAE0/1fnJnPDumXD6p75LTCpkA1jxVFpunLqIgKtSr8M84z5dyX4QQ9Rtb4tcd6
3ptgQZkoIGqrVdwskL8pSkTjI6zkG4ebB5UmlNiRQw7TcwmufOfYfAS94PGZaDxH
wFGtMyOvP2UXBxduMwIDAQAB
-----END PUBLIC KEY-----

现在,问题是我无法将其转换为格式" RSAPublicKey"使用python2.7.8的rsa包。

错误代码:

key = rsa.key.PublicKey.load_pkcs1(self.publickey["pubkey"].encode("utf-8"), "PEM")

错误提示:

ValueError: No PEM start marker "-----BEGIN RSA PUBLIC KEY-----" found

我会使用正确的" rsapublickey"为:

password_rsaed = base64.b64encode(rsa.encrypt(self.password.encode("utf-8"), key))

1 个答案:

答案 0 :(得分:0)

我有一个解决问题的方法。它的:

rsa.PublicKey.load_pkcs1_openssl_pem(cls, keyfile)

它从OpenSSL加载PKCS#1.5 PEM编码的公钥文件,并且可以识别以" ----- BEGIN PUBLIC KEY -----"开头的内容,然后返回公钥对象。

print(type(self.publickey["pubkey"].encode("utf-8")))
key = rsa.PublicKey.load_pkcs1_openssl_pem(self.publickey["pubkey"].encode("utf-8"))
print(type(key))

结果:

<class 'bytes'>
<class 'rsa.key.PublicKey'>

TIPS:     该方法来自python3。