Алгоритм слепой RSA подписи - C#

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

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

Взял с википедии http://ru.wikipedia.org/wiki/%D1%EB%E5%EF%E0%FF_%EF%EE%E4%EF%E8%F1%FC Алиса выбирает случайным образом число из диапазона от 1 до n. Затем она маскирует m, вычисляя: t=m*k^e mod n Боб подписывает t: t^d=(m*k^e)^d mod n = m^d * k mod n Алиса снимает маскировку с td, вычисляя s = t^d / k mod n Результатом является s = t^d / k mod n Считаем: e = 3; d = 6111579; n = 9173503; k = 186; m = 901; 1) t= (901*186^3) mod 9173503 = 151360 2) t^d = (151360^6111579) mod 9173503 = 8476072 3) s= (8476072/186) mod 9173503 = 45570 Собственно s это и есть подписанная m Вопрос следующий: когда считаешь s^e mod n результат = 3783175, а теоритически должна получиться m т.е 1000 где ошибка? можно ключи и меньше брать. эти я с вики взял. Помогите пожалуйста

Решение задачи: «Алгоритм слепой RSA подписи»

textual
Листинг программы
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.  
  6.             BigInteger e = 13;
  7.             BigInteger d = 37;
  8.             BigInteger n = 143;
  9.             BigInteger k = 31;
  10.             BigInteger m = 100;
  11.             BigInteger f = 9167368;
  12.  
  13.             //шаг 1
  14.             BigInteger t = ((m % n) * (k.modPow(e, n))) % n;
  15.             //2
  16.             BigInteger td = t.modPow(d, n);
  17.             //3
  18.             BigInteger s = (td / k) % n;
  19.         }
  20.     }

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


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

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

12   голосов , оценка 4.167 из 5

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

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

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