Algorytmy kryptograficzne | Laboratorium 12

  1. Wykorzystując reprezentację NAF (Non-Adjacent Form), zaimplementuj szybkie mnożenie punktów na krzywych eliptycznych.
    • Zaimplementuj funkcje naf(k), która zwraca reprezentacje NAF liczby naturalnej $k$.
    • Dla $k \in {31, 47, 73, 85}$ wypisz reprezentacje binarna i NAF.
    • Zaimplementuj mnożenie skalarne mul_naf(k, P) wykorzystujące NAF.
    • Porównaj liczbę dodawań i podwojeń dla mul(k, P) i mul_naf(k, P) dla różnych wartości $k$.
    • Dla krzywej $$ E: y^2 \equiv x^3 + 2x + 2 \pmod{17} $$ i punktu $G = (5,1)$ wykonaj mnożenie $kG$ dwiema metodami i sprawdź poprawność wyników.