javacryptographybigintegerelgamal

Why doesn't my implementation of ElGamal work for long text strings?


I'm playing with the El Gamal cryptosystem, and my goal is to be able to encipher and decipher long sequences of text.

El Gamal requires the plaintext to be an integer. I have turned my string into a byte[] using the .getBytes() method for Strings, and then created a BigInteger out of the byte[]. After encryption/decryption, I turn the BigInteger into a byte[] using the .toByteArray() method for BigIntegers, and then create a new String object from the byte[].

I am using a 1035 bit key, and this works perfectly when I encipher/decipher with strings up to 129 characters. With 130 or more characters, the output produced from my decipher method is garbled.

Can someone suggest how to solve this issue?


Solution

  • Just like in RSA, you cannot encrypt a value larger than the modulus in ElGamal.