RSA декодирование на Python

Продолжая тему RSA кодирования в Python нужно рассмотреть декодирование информации.

Для этого так же воспользуемся пакетом M2Crypto и напишем свою функцию для декодирования данных.

import M2Crypto
from base64 import b64decode

private_key = "privatekey.pem"

def decrypt(private_key, encrypted_key, encrypted_data):
    pk = M2Crypto.RSA.load_key(private_key)
    envelope_key = pk.private_decrypt(b64decode(encrypted_key), M2Crypto.RSA.pkcs1_padding)
    return do_decrypt(envelope_key, encrypted_data)

def do_decrypt(envelope_key, encrypted_data):
    encrypted_data = b64decode(encrypted_data)
    cipher = M2Crypto.EVP.Cipher(alg='rc4', key=envelope_key, iv='', op=0)
    v = cipher.update(encrypted_data)
    v += cipher.final()
    return v

Для проверки подписи нужно проделать следующую процедуру:

import M2Crypto
from base64 import b64decode

public_key = 'publickey.pem'

key = M2Crypto.RSA.load_pub_key(public_key)
digest = sha.sha(v).digest()
print key.verify(digest, b64decode(signature_for_test), 'sha1')

Вот собственно и все. Достаточно просто.

 
comments powered by Disqus