Python,将 RSA-256 公钥加载到代码中

问题描述

我正在尝试在 Python 中加载 RSA-256 中的公钥。

public_key=Out[24]: '-----BEGIN CERTIFICATE-----\nMIIEYTCCA0mgAwIBAgIOAXdD+6OnAAAAACcBwuUwDQYJKoZIhvcNAQELBQAweTER\nMA8GA1UEAwwIQWxkZXJhYW4xGDAWBgNVBAsMDzAwRDBDMDAwMDAwOGV6UDEXMBUG\nA1UECgwOU2FsZXNmb3JjZS5jb20xFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xCzAJ\nBgNVBAgMAkNBMQwwCgYDVQQGEwNVU0EwHhcNMjEwMTI3MTMxNTAwWhcNMjIwMTI3\nMTIwMDAwWjB5MREwDwYDVQQDDAhBbGRlcmFhbjEYMBYGA1UECwwPMDBEMEMwMDAw\nMDA4ZXpQMRcwFQYDVQQKDA5TYWxlc2ZvcmNlLmNvbTEWMBQGA1UEBwwNU2FuIEZy\nYW5jaXNjbzELMAkGA1UECAwCQ0ExDDAKBgNVBAYTA1VTQTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQocggEBAN0KKolUflB1/wZDnFScGkFf1SkoeuOFPw+UURCz\nc8tPLOLPLIt/qkUBt5X8ptCVuWfIoscrj4my25xW9c21d4cxTM7wlUDunoH2lohu\n4KbrpOoGJ0HelsPV9BV3RKuj/hDsypS5StW1RLUZYBOUFRQaQPB7drb1KUYqUV1q\nXbf/gWm9TGq5vQS29LZYDgW+T+6xBGltqNtlNAPRUbShQusmtizZM8v54zbtSjaP\nWHdZ4S1VWqSt+03JRobEIMBHr2L2otsAXOBfaBUqVkGDi8b1YynBOa0A+6cogq9x\nb3xH6fW+RTvTyA9VkptcFfWO+ePOTqkR+f8ObhO1if94c50CAwEAAaOB5jCB4zAd\nBgNVHQ4EFgQUMj3VA9/H7zXx8UsOCAuQuRQGLkswDwYDVR0TAQH/BAUwAwEB/zCB\nsAYDVR0jBIGoMIGlgBQyPdUD38fvNfHxSw4IC5C5FAYuS6F9pHsweTERMA8GA1UE\nAwwIQWxkZXJhYW4xGDAWBgNVBAsMDzAwRDBDMDAwMDAwOGV6UDEXMBUGA1UECgwO\nU2FsZXNmb3JjZS5jb20xFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xCzAJBgNVBAgM\nAkNBMQwwCgYDVQQGEwNVU0GCDgF3Q/ujpwAAAAAnAcLlMA0GCSqGSIb3DQEBCwUA\nA4IBAQDPkaJgi7mqMmhwz7x7q7LssZiuuenYMzFWewry6SZmjqZwLWvxhSWLmog9\nkeNQH7nAbI+6KrMHJ36LPJdD+zbNYQaz8S9qW8HBVOap/J6wKYOC6h/dtKLcfmbt\nZlCyCy6SJv0mDQyxMVyq6gybjRrBnNcoy/hTAEQNhmHL6aZ7E2/eX/EOD1Y1EHWl\nmFqmtpST36F9Y2WaYpKVwBPcZqcwxPpGrJ95FfxR+kkA84Ke3SZ/RHHkZzexcOOR\n5YLaIZf9sVzslSsLrt6uaFMQOdTT5kY1CvCMHaw3j/kDrIpladwyfzhmVgUVx1D3\nxF5JnmOe6qhhyPwRMg7Myw7KIfF5\n-----END CERTIFICATE-----'

encoded = <my jwt token>
import jwt
decoded = jwt.decode(encoded,public_key,algorithms=["RS256"])

这引发了以下错误

ValueError: Could not deserialize key data.

所以我尝试以不同的方式加载公钥:

from Crypto.PublicKey import RSA
pub_key = RSA.importKey(public_key)

其中提出:

ValueError: RSA key format is not supported

此外,当我尝试将其加载到二进制文件 (b'----- ...) 时,也会引发相同的错误

更新:

设法使用 pycryptodome 创建 RSA 对象:

from Crypto.PublicKey.RSA import import_key
key = import_key(public_key)

但是在运行时:

decoded = jwt.decode(encoded,key,algorithms=["RS256"])

我得到:

TypeError: Expecting a PEM-formatted key.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)