Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2017, 19:24   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию Сложение точек элиптической кривой

Нужно произвести сложение точек эллиптической кривой, не пойму где ошибка, подскажите.

Вот например такие точки

Код:
{(440, 539), (128, 672)};
n = 29, то есть

(128, 672) - 29*(440, 539) вычислить
Вот код которым делать пытаюсь

Код:
               int x1 = 440;
                int y1 = 539;

                int x2 = 128;
                int y2 = 672;

                int lyambda = ((3 * (x1 * x1) - 1) / (2 * y1)) % 751; // P = Q
                if (lyambda < 0)
                {
                    lyambda = lyambda + 751;
                }

                int x3 = (lyambda * lyambda - x1 - x1) % 751;
                if (x3 < 0)
                {
                    x3 = x3 + 751;
                }

                int y3 = (lyambda * (x1 - x3) - y1) % 751;
                if (y3 < 0)
                {
                    y3 = y3 + 751;
                }

                for (int i = 0; i < 28; i++)
                {
                    lyambda = ((y3 - y1) / (x3 - x1)) % 751;    //P != Q
                    if (lyambda < 0)
                    {
                        lyambda = lyambda + 751;
                    }

                    x3 = (lyambda * lyambda - x1 - x3) % 751;
                    if (x3 < 0)
                    {
                        x3 = x3 + 751;
                    }

                    y3 = (lyambda * (x1 - x3) - y1) % 751;
                    if (y3 < 0)
                    {
                        y3 = y3 + 751;
                    }
                }

                lyambda = ((y3 - y2) / (x3 - x2)) % 751;
                if (lyambda < 0)
                {
                    lyambda = lyambda + 751;
                }

                int x4 = (lyambda * lyambda - x3 - x2) % 751;
                if (x4 < 0)
                {
                    x4 = x4 + 751;
                }

                int y4 = (lyambda * (x4 - x2) - y2) % 751;
                if (y4 < 0)
                {
                    y4 = y4 + 751;
                }

У меня на выходе получается

Код:
(438,651)

А должно быть, верный ответ

Код:
(228,480)
Вопрос: Что я делаю не так??
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 21.04.2017, 20:53   #2
hoolygan
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 64
По умолчанию

А ну ка математику сего открой, запиши формулу вычислений, а мы сверим с кодом.
hoolygan вне форума Ответить с цитированием
Старый 22.04.2017, 13:55   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Разобрался частично, какая то магия твориться, нормально расшифровывются варианты с секретным ключем равным 45, любые другие варианты с другими секретными ключами, расшифровывает неверно, хз даже куда копать??
a.n.o.n.i.m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны координаты точек n на плоскости. Найти номера двух точек, расстояние между которыми наибольшее. getredtm Помощь студентам 3 01.07.2013 01:47
Задаnm n точек. Найти m=3,4... точек и построить на них m-угольник: количество точек , лежащих внутри и вне его мин. различается L.Rain Помощь студентам 0 11.12.2011 22:19
Даны координаты n точек на плоскости. Найти номера двух точек, расстояние между которыми наибольшее. Viwwna Паскаль, Turbo Pascal, PascalABC.NET 2 19.11.2011 06:33
дано два множества точек.Найти пересечение и разность этих множеств.Координаты точек X и Y вводить с клав Degster Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2011 18:32
определить радиус и центр окружности, на кот. лежит наиб.число точек заданного на плоскости мн-ва точек) kcю Помощь студентам 0 17.11.2009 19:50