IIC3253 / 2023

40 stars 1 forks source link

[T3] punto infinito y función __pow__ #35

Open Tiinmarr opened 1 year ago

Tiinmarr commented 1 year ago

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 PPPP... donde * es la operación de grupo)?

Gracias

marceloarenassaavedra commented 1 year ago

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!

Tiinmarr commented 1 year ago

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?

marceloarenassaavedra commented 1 year ago

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