How to load in Python-RSA a public RSA key from a file generated with openssl?
Question: I generated a private and a public key with the following commands:

    
    
    openssl genrsa -out private_key.pem 512
    openssl rsa -in private_key.pem -pubout -out public_key.pem
    

I then tried to load them with a python script using Python-RSA:

    
    
    import os
    import rsa
    
    with open('private_key.pem') as privatefile:
        keydata = privatefile.read()
    privkey = rsa.PrivateKey.load_pkcs1(keydata,'PEM')
    
    with open('public_key.pem') as publicfile:
        pkeydata = publicfile.read()
    
    pubkey = rsa.PublicKey.load_pkcs1(pkeydata)
    
    random_text = os.urandom(8)
    
    #Generate signature
    signature = rsa.sign(random_text, privkey, 'MD5')
    print signature
    
    #Verify token
    try:
        rsa.verify(random_text, signature, pubkey)
    except:
        print "Verification failed"
    

My python script fails when it tries to load the public key:

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


Answer: Python-RSA uses the PEM RSAPublicKey format and the PEM RSAPublicKey format
uses the header and footer lines: [openssl
NOTES](http://www.openssl.org/docs/apps/rsa.html#NOTES)

\-----BEGIN RSA PUBLIC KEY----- \-----END RSA PUBLIC KEY-----

Output the public part of a private key in RSAPublicKey format: openssl
EXAMPLES

    
    
     openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
    

