El algoritmo ElGamal , un algoritmo de cifrado asimétrico que debe su nombre al criptógrafo egipcio Taher Elgamal que lo describió en 1984, se basa en el mismo principio que en el que se fundamenta el intercambio de clave de Diffie-Hellman (ver este post donde explico este protocolo criptográfico ). Como en todo criptosistema de clave pública un usuario dispone de dos claves : una pública , que debe estar en posesión de cualquier persona que pretenda enviarle un mensaje cifrado, y otra privada , que el usuario utilizará para descifrar los mensajes que le envíen y que sólo él posee. Es decir, el emisor cifrará el mensaje con la clave pública del receptor y sólo éste podrá descifrarlo utilizando su clave privada . Pues bien, estableciendo una analogía entre este algoritmo de cifrado y el citado protocolo de intercambio de clave con dos intervinientes en la comunicación, que comparten una clave de sesión ( 'k' ), el secreto compartido, que viene dada ...