What does one do when the document to be encrypted consists of many more digits than the modulus? Note that this sort of problem can arise with any cryptosystem, public-key or traditional. The standard solution is to use the system as a block cypher: break the document into smaller blocks, and encrypt each block separately.
For practical purposes, however, there is an obstacle to the use of public-key cryptosystems (El Gamal or RSA) in encrypting huge documents. The modulus must be quite big (a couple of hundred digits at least) in order for the system be secure; otherwise, an eavesdropper with reasonable computing resources could crack the system. However, with such a big modulus, exponentiating takes a while, even using a fast algorithm such as repeated squaring. This is not an issue if the document is short (a few thousand digits), but if the document consists of millions of digits, it is a big issue.
The advantages of public-key cryptography are too great to give up
entirely, however. The solution? Use public-key cryptography to
encrypt a 100-digit number k, and send that encryption. Then use
k as the key to
encrypt the document using a fast, one-key system such as DES, and
send that encryption. The recipient first determines the key k
using his knowledge of his secret key, then use k as a key with DES
to decrypt the big document.