Search code examples
pythonm2crypto

Python M2Crypto load_pub_key from string


How i can load_pub_key from string.

pub_key1 = M2Crypto.RSA.load_pub_key('public.pem')
f = open('public.pem', 'rb')
bio = M2Crypto.BIO.MemoryBuffer(f.read())
pub_key2 = M2Crypto.RSA.load_pub_key_bio(bio)
print pub_key1 == pub_key2

false

Solution

  • print pub_key1 == pub_key2 -> false, but:

    PUBKEY_TEMPLATE = "-----BEGIN PUBLIC KEY-----\n{}\n-----END PUBLIC KEY-----"
    pub_key1 = M2Crypto.RSA.load_pub_key('public.pem')
    bio = M2Crypto.BIO.MemoryBuffer(PUBKEY_TEMPLATE.format('<string with pub key>'.strip()))
    pub_key2 = M2Crypto.RSA.load_pub_key_bio(bio)
    CipherText1 = pub_key1.public_encrypt("This is a secret", M2Crypto.RSA.pkcs1_oaep_padding)
    CipherText2 = pub_key2.public_encrypt("This is a secret", M2Crypto.RSA.pkcs1_oaep_padding)
    RSA = M2Crypto.RSA.load_key('private.pem')
    Text1 = RSA.private_decrypt(CipherText1, M2Crypto.RSA.pkcs1_oaep_padding)
    Text2 = RSA.private_decrypt(CipherText2, M2Crypto.RSA.pkcs1_oaep_padding)
    print Text1
    print Text2
    
    
    This is a secret
    This is a secret