IIC3253/2023

[T3] punto infinito y función __pow__

Opened this issue · 3 comments

Hola, Tengo 2 preguntas: en primer lugar, para el punto infinito, debemos definir un elemento con coordenadas o simplemente definir un elemento que podamos identificar como el punto infinito? Por ejemplo, si sé que estoy llamando a la función mul con P y O (punto infinito), sé que debería devolver P. (Así que no necesito coordenadas específicas para O, verdad?).

Mi segunda pregunta se refiere a la función pow. Hay alguna forma de calcular P**n de forma eficaz y rápida (es decir, que no sea simplemente PPP*P... donde * es la operación de grupo)?

Gracias

Tú tienes que elegir cómo representar al elemento neutro. Lo importante es que las operaciones se realicen pudiendo verificar si algunos de los elementos involucrados es el neutro, de manera tal de respetar reglas como las que tú mencionas (la llamada de la función mul con entradas P y O debe retornar P).

El algoritmo de exponenciación rápida resuelve el problema de calcular P**n de manera eficiente.

Saludos!

Entonces, no entiendo muy bien cómo rellenar la comprobación SecretKeyHolder donde el generador a la potencia q (q es el orden del subgrupo) debe ser 1. Qué valores debemos comparar?

Lo que tienes que verificar es que el generador a la potencia q sea igual al neutro.