Алгоритм скалярного умножения для эллиптической кривой

на хабре есть статья по данной тематике https://habr.com/ru/post/335906/

Для операции сложения там все описано подробно, а для умножения одна единственная формула. введите сюда описание изображения

Допустим у нас есть входные данные. Px, Py. [4,6.78]

Подскажите как найти для этих точек Qx, Qy

введите сюда описание изображения


Ответы (1 шт):

Автор решения: ants

Здесь на слайде 7 есть формула сложения точек и формула удвоения точки эллиптической кривой:
https://mipt.ru/education/chair/radio_engineering/infsec/2008/seminars/Seminar_6.pdf
Под удвоением точки понимаем операцию Q = 2 * P = P + P

  1. Путь простой, но медленный

Для Q = n * P производим n сложений точки P: Q = (((P + P) + P) + P) + ...
Складывать точки мы умеем по формуле со слайда.
Это работает медленно.

  1. Можно быстрее

Для нахождения точки Q = n * P применим алгоритм, работающий так же, как и бинарное возведение в степень.

Например, для Q = 6 * P:
Q = 6 * P = 2 * (P + 2 * P)
В получившемся выражении фигурируют только операции сложения и удвоения, а их мы умеем выполнять.

Псевдокод:

Q = P
Пока n > 0:
    Если n - чётное, то Q = 2 * Q, n = n / 2
    иначе Q = P + 2 * Q, n = (n - 1) / 2

Подробнее:
https://e-maxx.ru/algo/binary_pow
https://moluch.ru/archive/15/1426/

→ Ссылка