# -*- coding: utf-8 -*- from M2Crypto import RSA from M2Crypto import BIO from binascii import a2b_hex, b2a_hex def load_pub_key_string(string): bio = BIO.MemoryBuffer(string) return RSA.load_pub_key_bio(bio) def block_data(texts, block_size): for i in range(0, len(texts), block_size): yield texts[i:i + block_size] def decrypt(publick_key, texts): plaintext = b"" block_size = 256 for text in block_data(a2b_hex(texts), block_size): current_text = publick_key.public_decrypt(text, RSA.pkcs1_padding) plaintext += current_text return plaintext