Эль-Гамаль+ElGamal

Данная система является альтернативой RSA и при равном значении ключа обеспечивает ту же криптостойкость. Однако общего мнения по поводу предпочтительности того или иного метода нет.

В отличие от RSA метод Эль-Гамаля основан на проблеме дискретного логарифма. Этим он похож на алгоритм Диффи-Хелмана. Если возводить число в степень в конечном поле достаточно легко, то восстановить аргумент по значению (то есть найти логарифм в множестве целых чисел) довольно трудно.


 * Генерация ключей**
 * 1) Генерируется [|случайное простое число] p длины n [|битов].
 * 2) Выбирается случайный [|примитивный элемент] g поля Zp.
 * 3) Выбирается случайное целое число x такое, что 1 < x < p-1.
 * 4) Вычисляется [[image:juihkgh.GIF]].
 * 5) Открытым ключом является тройка (p,q,y), закрытым ключом — число x.

Сообщение M шифруется следующим образом: Нетрудно видеть, что длина шифротекста в схеме Эль-Гамаля длиннее исходного сообщения вдвое.
 * Шифрование**
 * 1) Выбирается сессионный [|ключ] — случайное целое число k такое, что 1 < k < p-1
 * 2) Вычисляются числа [[image:juihkghg.GIF]] и [[image:tpl-it/juihkghgk.GIF]].
 * 3) Пара чисел (a,b) является [|шифротекстом].

Зная закрытый ключ x, исходное сообщение можно вычислить из шифротекста (a,b) по формуле: При этом нетрудно проверить, что и поэтому . Для практических вычислений больше подходит следующая формула:
 * Расшифрование**

media type="custom" key="24525976"