用Python解密PEM证书

问题描述

我正在尝试用Python解密PEM证书。目前,我正在尝试使用密码学x509来实现这一目标。这是我的主管向我建议的,但是,由于他目前不可用,所以我没有机会问他。

我目前所拥有的是:

from cryptography import x509
from cryptography.hazmat.backends import default_backend
import json

def uitlezen(message):
    c = x509.load_der_x509_certificate(message.read(),default_backend())
    print(c)
    return c

if __name__ == "__main__":
    en_cert = json.loads("example PEM")
    de_cert = uitlezen(en_cert)
    print(de_cert)

(激活它是有原因的,因为它是较大脚本的一部分)。 这给出了以下错误

Traceback (most recent call last):
  File "path",line 11,in <module>
    en_cert = json.loads("-----BEGIN PRIVATE KEY-----MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBj08sp5++4anGcmQxJjAkBgNVBAoTHVByb2dyZXNzIFNvZnR3YXJlIENvcnBvcmF0aW9uMSAwHgYDVQQDDBcqLmF3cy10ZXN0LnByb2dyZXNzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD...bml6YXRpb252YWxzaGEyZzIuY3JsMIGgBggrBgEFBQcBAQSBkzCBkdbnBggrBgEFBQcwAoZBaHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZ3Nvcmdhz3P668YfhUbKdRF6S42Cg6zn-----END PRIVATE KEY-----")
  File "path",line 348,in loads
    return _default_decoder.decode(s)
  File "path",line 337,in decode
    obj,end = self.raw_decode(s,idx=_w(s,0).end())
  File "path",line 355,in raw_decode
    raise JSONDecodeError("Expecting value",s,err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

除了将en_cert(以及示例证书)作为字符串,我已经尝试过相同的事情:

from cryptography import x509
from cryptography.hazmat.backends import default_backend
import json

def uitlezen(message):
    c = x509.load_der_x509_certificate(message.read(),default_backend())
    print(c)
    return c

if __name__ == "__main__":
    en_cert = "example PEM" 
    de_cert = uitlezen(en_cert)
    print(de_cert)

这会出现以下错误

Traceback (most recent call last):
  File "path",line 12,in <module>
    de_cert = uitlezen(en_cert)
  File "path",line 6,in uitlezen
    c = x509.load_der_x509_certificate(message.read(),default_backend())
AttributeError: 'str' object has no attribute 'read'

有人知道我应该如何通过示例PEM使其解密吗?

解决方法

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

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

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