Алгоритм слепой 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
Листинг программы
class Program
    {
        static void Main(string[] args)
        {
 
            BigInteger e = 13;
            BigInteger d = 37;
            BigInteger n = 143;
            BigInteger k = 31;
            BigInteger m = 100;
            BigInteger f = 9167368;
 
            //шаг 1
            BigInteger t = ((m % n) * (k.modPow(e, n))) % n;
            //2
            BigInteger td = t.modPow(d, n);
            //3
            BigInteger s = (td / k) % n;
        }
    }

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


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

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

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