В криптографии эллиптических кривых есть скалярное умножение с использованием сложения и удвоения точек.
Существует ли вообще разделение точек пополам. Проще говоря, если точка равна P, то есть ли способ получить точку P/2
Я использовал следующий код Python. Не могли бы вы помочь мне изменить код, чтобы я мог выполнить идеальную операцию выделения?
from sympy import mod_inverse, isprime
# secp256k1 parameters
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
a = 0
b = 7
# Elliptic curve point doubling formula
def point_doubling(x, y, p):
# Slope lambda for point doubling
lambda_ = (3 * x**2 + a) * mod_inverse(2 * y, p) % p
x_r = (lambda_**2 - 2 * x) % p
y_r = (lambda_ * (x - x_r) - y) % p
return x_r, y_r
# Point halving function
def point_halving(x_P, y_P, p):
# Solve for x_Q such that x_P = lambda^2 - 2x_Q (mod p)
for x_Q in range(p):
# Check if y_Q exists
y_Q_squared = (x_Q**3 + a * x_Q + b) % p
y_Q = pow(y_Q_squared, (p + 1) // 4, p) # Modular square root
# Check if 2Q = P
if y_Q and point_doubling(x_Q, y_Q, p) == (x_P, y_P):
return x_Q, y_Q
return None
# Generator point G (compressed coordinates from secp256k1 spec)
x_G = 55066263022277343669578718895168534326250603453777594175500187360389116729240
y_G = 32670510020758816978083085130507043184471273380659243275938904335757337482424
# Halve the generator point
Q = point_halving(x_G, y_G, p)
print("Halved point Q:", Q)
Подробнее здесь: https://stackoverflow.com/questions/793 ... yptography
Уполовинивание точки в криптографии на эллиптических кривых ⇐ Python
Программы на Python
-
Anonymous
1736166022
Anonymous
В криптографии эллиптических кривых есть скалярное умножение с использованием сложения и удвоения точек.
Существует ли вообще разделение точек пополам. Проще говоря, если точка равна P, то есть ли способ получить точку P/2
Я использовал следующий код Python. Не могли бы вы помочь мне изменить код, чтобы я мог выполнить идеальную операцию выделения?
from sympy import mod_inverse, isprime
# secp256k1 parameters
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
a = 0
b = 7
# Elliptic curve point doubling formula
def point_doubling(x, y, p):
# Slope lambda for point doubling
lambda_ = (3 * x**2 + a) * mod_inverse(2 * y, p) % p
x_r = (lambda_**2 - 2 * x) % p
y_r = (lambda_ * (x - x_r) - y) % p
return x_r, y_r
# Point halving function
def point_halving(x_P, y_P, p):
# Solve for x_Q such that x_P = lambda^2 - 2x_Q (mod p)
for x_Q in range(p):
# Check if y_Q exists
y_Q_squared = (x_Q**3 + a * x_Q + b) % p
y_Q = pow(y_Q_squared, (p + 1) // 4, p) # Modular square root
# Check if 2Q = P
if y_Q and point_doubling(x_Q, y_Q, p) == (x_P, y_P):
return x_Q, y_Q
return None
# Generator point G (compressed coordinates from secp256k1 spec)
x_G = 55066263022277343669578718895168534326250603453777594175500187360389116729240
y_G = 32670510020758816978083085130507043184471273380659243275938904335757337482424
# Halve the generator point
Q = point_halving(x_G, y_G, p)
print("Halved point Q:", Q)
Подробнее здесь: [url]https://stackoverflow.com/questions/79332999/point-halving-in-elliptic-curve-cryptography[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия