Я знаю, что есть что-то, называемое двойным и add метод, который вычисляет открытый ключ из закрытого ключа, и именно так он обычно работает с точки зрения шифрования, но я уже пробовал делать это вручную, умножая g k раз, и он по-прежнему работает нормально. Я хотел бы сделать это, но в виде суммирования, чтобы он мог сделать это мгновенно для 1 значения закрытого ключа.
Код, который я использую до сих пор:
Код: Выделить всё
def scalar_multiply(k, G, p):
"""Multiply point G by scalar k by directly adding G k times."""
result = None # This will represent the point at infinity
# Add G to result k times
for _ in range(k):
result = point_add(result, G, p)
#The code below is what I want you guys to change for me. It's based off of the for loop above.
y = symbols('y')
#result = G
result2 = summation(point_add(None,G,p),(n,0,k)) # just a placeholder, someone will have to fix this
return result
Я хочу, чтобы вы, ребята, посмотрели, как работает функция scalar_multiply перед #result = G и на основе этого создайте суммирование с помощью Sympy, чтобы я мог использовать его в своем коде. Не беспокойтесь о неизвестном коде, таком как функция point_add. В общем, просто покажите мне, как я могу использовать суммирование вместо цикла for для k с помощью функции point_add.
Просто примечание. Когда я пытаюсь использовать result2 и оценить его с помощью Sympy, он каждый раз возвращает один и тот же открытый ключ. Что-то не так с кодом суммирования.
Подробнее здесь: https://stackoverflow.com/questions/791 ... a-public-k