Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

Код:

{(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, 21:53   #2
hoolygan
Форумчанин
 
Регистрация: 11.04.2017
Сообщений: 63
Репутация: 10
По умолчанию

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




15:58.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru