How to read a RSA public key in PEM + PKCS#1 format

后端 未结 1 1798
猫巷女王i
猫巷女王i 2020-12-05 02:47

I have a RSA public key in PEM format + PKCS#1(I guess):

-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAJNrHWRFgWLqgzSmLBq2G89exgi/Jk1NWhbFB9gHc9MLORmP3BOCJS9k
onzT         


        
相关标签:
1条回答
  • 2020-12-05 03:26

    PyCrypto supports PKCS#1 in the sense that it can read in X.509 SubjectPublicKeyInfo objects that contain an RSA public key encoded in PKCS#1.

    Instead, the data encoded in your key is a pure RSAPublicKey object (that is, an ASN.1 SEQUENCE with two INTEGERs, modulus and public exponent).

    You can still read it in though. Try something like:

    from Crypto.PublicKey import RSA
    from Crypto.Util import asn1
    from base64 import b64decode
    
    key64 = 'MIGJAoGBAJNrHWRFgWLqgzSmLBq2G89exgi/Jk1NWhbFB9gHc9MLORmP3BOCJS9k\
    onzT/+Dk1hdZf00JGgZeuJGoXK9PX3CIKQKRQRHpi5e1vmOCrmHN5VMOxGO4d+znJDEbNHOD\
    ZR4HzsSdpQ9SGMSx7raJJedEIbr0IP6DgnWgiA7R1mUdAgMBAAE='
    
    keyDER = b64decode(key64)
    seq = asn1.DerSequence()
    seq.decode(keyDER)
    keyPub = RSA.construct( (seq[0], seq[1]) )
    

    Starting from version 2.6, PyCrypto can import also RsaPublicKey ASN.1 objects. The code is then much simpler:

    from Crypto.PublicKey import RSA
    from base64 import b64decode
    
    key64 = b'MIGJAoGBAJNrHWRFgWLqgzSmLBq2G89exgi/Jk1NWhbFB9gHc9MLORmP3BOCJS9k\
    onzT/+Dk1hdZf00JGgZeuJGoXK9PX3CIKQKRQRHpi5e1vmOCrmHN5VMOxGO4d+znJDEbNHOD\
    ZR4HzsSdpQ9SGMSx7raJJedEIbr0IP6DgnWgiA7R1mUdAgMBAAE='
    
    keyDER = b64decode(key64)
    keyPub = RSA.importKey(keyDER)
    
    0 讨论(0)
提交回复
热议问题