ElGamal je jeden z algoritmů asymetrické kryptografie, má ovšem nevýhodu, že šifrovaná data jsou dvakrát delší než data nešifrovaná. To je možná důvodem, proč není jeho nasazení tak masivní[zdroj?!], jako nasazení algoritmu RSA, který tímto nedostatkem netrpí. Opírá se o problém výpočtu diskrétního logaritmu.
Nechť je zvolena veřejně známá cyklická grupa, tzn. celé číslo , tzv. modul grupy, a celé číslo , tzv. generátor dané grupy. Potom si i-tý účastník volí svůj tajný klíč
, tak, že a vypočte veřejný klíč jako , jenž zveřejní.
Pokud potom chce poslat uživatel zprávu uživateli (zpráva musí být menší než ), musí znát veřejný klíč , tzn. . Poté probíhá komunikace podle následujícího schématu.
zvolí náhodné číslo takové, že .
spočte , a a pošle pár uživateli .
Uživatel spočte a k tomuto číslu určí inverzní prvek (vzhledem k operaci v grupě ).