El algoritmo ElGamal se basa en el trabajo de Diffie-Hellman de 1976 sobre criptografía de clave pública. Fue descrito por Taher ElGamal en 1984 y puede usarse para generar firmas digitales, cifrar o descifrar mensajes. Se utiliza en software como GNU Privacy Guard y versiones recientes de PGP. El esquema involucra que Alicia elija números primos P y G, así como una clave privada A, para generar su clave pública. Bruno luego puede cifrar un mensaje eligiendo un número aleatorio y aplicando operaciones módulo