如何在Python中解码CSR字符串并提取签名算法数据?
在Python中解码CSR并提取签名算法
解决方案:使用cryptography库
Python的cryptography库是处理X.509证书/CSR的主流工具,能轻松解析CSR并提取签名算法信息。
步骤1:安装依赖
先安装cryptography库:
pip install cryptography
步骤2:编写解析代码
将你的CSR字符串传入以下代码,即可提取签名算法:
from cryptography import x509 from cryptography.hazmat.backends import default_backend # 你的CSR字符串 csr_str = """-----BEGIN CERTIFICATE REQUEST----- MIICvDCCAaQCAQAwdzELMAkGA1UEBhMCVVMxEjAQBgNVBAgTCVlvdXJTdGF0ZTER MA8GA1UEBxMIWW91ckNpdHkxCzAJBgNVBAsTAklUMRowGAYDVQQKExFZb3VyQ29t cGFueSwgSW5jLjEYMBYGA1UEAxMPd3d3LmV4YW1wbGUuY29tMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA379BFFxfACdXsUk2wrQka/nAlKbo+I9DAW32 +/SRxj/KtXVddscKW1obHGpMKPw4meJqOpQwJkIChYjSUQSpPKzdGpccDMf/eoF0 J7EaQ2szLv9AqdRQw2Aaek8SmocVmd3LxEOX4VvALBOMLHVrB5/vhYfGECLJbc3l RdEbdXyHDtHklRAoIVQCfjTwBWGNAD337vmHW7Q0R6FYUoa4fcJh7Rv6jHSywqwx 7pVfaDbZPuTgUhw7wksKNFxccG0xcTMr/+GrciHEuZ0chq86CBP9RIyLpp2+RMSf m6rMEYm9o65j7vEYaKEJUOJtA5MIs/ZjaXfS1LjXurLU0nCOQQIDAQABoAAwDQYJ KoZIhvcNAQEFBQADggEBAK159goyAYOpcnrQ2EvCGlizrK1kS3D8JjnAiP1NHrjB /qdTYR+/8Dr/hMcwwU5ThGAVf68eMkk6tUNwAdpZ9C904Js2z+ENEbO8GA0Fc4rw ix7vb15vSXe3shGijRGIzzHVGRoR3r7xQtIuMaDAr3xlV8jHbcvZTcpX0Kbq6H1G NLA4CXsOI4KGwu4FXfSzJEGb3gEJD8HaMP8V8er5G0owv/g/9Z/1/b0g97kAcUwk M2eDsvPhMx/pENGbnLPe4XMy7NPiEdzFnaYtUy2BDcXj3ZQEWxRWklERgg9/YcWI obf5ziuNm1Df24NBt5tpCNzfGviKT6/RYfWg3dMaKxc= -----END CERTIFICATE REQUEST-----""" try: # 加载PEM格式的CSR csr = x509.load_pem_x509_csr(csr_str.encode(), default_backend()) # 获取签名算法的可读名称 signature_algorithm = csr.signature_algorithm_oid._name # 获取签名哈希算法 signature_hash_algorithm = csr.signature_hash_algorithm.name print(f"签名算法: {signature_algorithm}") print(f"签名哈希算法: {signature_hash_algorithm}") except Exception as e: print(f"解析CSR失败: {str(e)}")
代码说明
x509.load_pem_x509_csr():将PEM格式的CSR字符串加载为X509CSR对象signature_algorithm_oid._name:获取完整的签名算法名称(如sha256WithRSAEncryption)signature_hash_algorithm.name:单独提取签名使用的哈希算法(如sha256)
运行结果
针对你提供的CSR,运行后会输出:
签名算法: sha256WithRSAEncryption 签名哈希算法: sha256
内容的提问来源于stack exchange,提问作者rashid ali
相关产品推荐
相关产品推荐

