Задать вопрос
GONJY_MONJY
@GONJY_MONJY
В поисках новых горизонтов

Как зашифровать сообщение алгоритмом Эль Гамаля с помощью закрытого ключа?

Доброго времени суток!
Я понимаю, что вопрос звучит максимально странно, но такова поставленная задача. Это как бы проверка целостности сообщения, но без использования ЭЦП. Просто шифруем сообщение закрытым, а расшифровываем открытым. Алгоритм RSA отлично срабатывает таким образом, и как я понял вообще, то способ должен быть аналогичен RSA (т.е. шифруем закрытым и расшифровываем открытым).

Я использовал стандартную схему генерации ключей:
  • p (модуль) - простое число
  • g (генератор) - первообразный корень по p
  • x (закрытый ключ) - случайное число в отрезке [2; p - 1]
  • y (часть открытого ключа) - g^x mod p


Значение a для символа M считаю таким же способом, как и при обычной операции шифрования октрытым ключом:
a = g^k mod p
Однако значение b для символа M рассчитываю с использованием закрытого ключа:
b = M * x^k mod p
При этом расшифрование идёт следующим образом (с использованием открытого ключа):
M = b * a ^ (p - y - 1) mod p

Но такой способ не всегда даёт то же M, что было изначально.

Для примера возьмём следующие значения:
  • p = 23
  • g = 5
  • x = 7
  • y = 17
  • M = 22


Таким образом я получаю значения a и b равные 17 и 18 соответсвенно, но расшифрованный символ M уже получается 10, а не ожидаемые 22.
Елси кто понимает как конкретно в описанной мной задаче должны выглядеть формулы, или есть иной способ без использования ЭЦП, то прошу объяснить это.
  • Вопрос задан
  • 43 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А почему вы решили, что открытый и закрытый ключи взаимозаменяемы? Схема асимметричная, шифрование идёт с помощью открытого и сессионного ключей, дешифрование с помощью закрытого ключа.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы