I have been using pycrypto module for encryption and decryption with RSA key pair and algorithm. The problem is when I try encrypting large files (10kB of text file) I take the block size of 32 byte when reading the file and encrypting it
>>> f = open('10kb','rb') >>> p = open('enc','wb') >>> while True: data = f.read(32) if not data: break enc_data = public_key.encrypt(data,32) p.write(enc_data[0]) p.close() f.close() It gives the output:
128 128 .......and the many 128 blocks it is writing When I try to decrypt the encrypted file, I need to read it with 128 byte block so as to give back 32 byte blocks,
>>> f = open('enc','rb') >>> p = open('dec','wb') >>> while True: data = f.read(128) if not data: break dec_data = private_key.decrypt(data) p.write(dec_data) p.close() f.close() It is giving the output:
32 32 .....so many 32 byte blocks it is decrypting, then 128 128 128 128 Traceback (most recent call last): File "<pyshell#251>", line 5, in <module> enc_data = private_key.decrypt(data) File "/usr/lib/python3/dist-packages/Crypto/PublicKey/RSA.py", line 174, in decrypt return pubkey.pubkey.decrypt(self, ciphertext) File "/usr/lib/python3/dist-packages/Crypto/PublicKey/pubkey.py", line 93, in decrypt plaintext=self._decrypt(ciphertext) File "/usr/lib/python3/dist-packages/Crypto/PublicKey/RSA.py", line 237, in _decrypt cp = self.key._blind(ciphertext, r) ValueError: Message too large To the point where it is outputting the block size of 32, it is decrypting right, but where it starts with 128, its messing up. Why it is saying Message size too large ? Is there any better and fast way to decrypt large text files using pycrypto module ?