Шифрование по алгоритму RSA - C#

Узнай цену своей работы

Формулировка задачи:

Криптосистема шифрования данных RSA Не получается дешифрование. Что не так? Пара чисел (e,n) публикуется в качестве открытого ключа. Пара чисел (d,n) является секретным ключом. Все числа известны кроме n. Шифрование сообщения с использованием открытого ключа: Если m – сообщение (сообщениями являются целые числа в интервале от 0 до n-1), то зашифровать это сообщение можно как c=(m в степени е) mod(n). Дешифрование сообщения с использованием секретного ключа: Получатель расшифровывает, полученное сообщение с: m=(c в степени d) mod (n).
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace RSA
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. int p = 13, q = 7, e = 5, d = 29;
  12. int n, c=0, m,r=0;
  13. string s;
  14. n = p * q;
  15. Console.Write("Сообщение: ");
  16. s = Console.ReadLine();
  17. m = Convert.ToInt32(s);
  18. Console.WriteLine("Открытый ключ: ({0},{1})", e,n);
  19. Console.WriteLine("Секретный ключ: ({0},{1})", d, n);
  20. if (m >= 0 && m < (n - 1))
  21. {
  22. c = (int)Math.Pow(m, e)%n;
  23. }
  24. Console.WriteLine("Шифрование: {0} ", c);
  25. r = (int)Math.Pow(c, d) % n;
  26. Console.WriteLine("Дешифрование: {0} ", r);
  27. Console.ReadLine();
  28. }
  29.  
  30. }
  31. }

Решение задачи: «Шифрование по алгоритму RSA»

textual
Листинг программы
  1. static int ModPow(int x, int y, int z)
  2.     => y == 0 ? 1 : (x * ModPow(x, y - 1, z)) % z;
  3.    
  4. static void Main()
  5. {
  6.     int p = 13, q = 7, e = 5, d = 29;
  7.     int n, c = 0, m, r = 0;
  8.     string s;
  9.     n = p * q;
  10.     Console.Write("Сообщение: ");
  11.     s = Console.ReadLine();
  12.     m = Convert.ToInt32(s);
  13.     Console.WriteLine("Открытый ключ: ({0},{1})", e, n);
  14.     Console.WriteLine("Секретный ключ: ({0},{1})", d, n);
  15.     if (m >= 0 && m < (n - 1))
  16.     {
  17.         c = ModPow(m, e, n);
  18.         Console.WriteLine("Шифрование: {0} ", c);
  19.         r = ModPow(c, d, n);
  20.         Console.WriteLine("Дешифрование: {0} ", r);
  21.     }
  22.     else Console.WriteLine("Слишком большое число");
  23.     Console.ReadLine();
  24. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут