1. Wejście: k = 100 #liczba bitów - mniejsza od 300 Wyjście: klucz publiczny: p = 20769187434139310514121985316880223 #liczba pierwsza p = 3 (mod 4) mająca min. k bitów A = 17364248047998077729699720348015610 B = 18961004445282423322533381916488735 Px = 2320240021928709874194025995780592 Py = 14799265073943436805126565754994838 Qx = 12269447532190809160065009894517400 Qy = 9983858041819674032650867073682761 klucz prywatny: p = 20769187434139310514121985316880223 A = 17364248047998077729699720348015610 B = 18961004445282423322533381916488735 Px = 2320240021928709874194025995780592 Px = 14799265073943436805126565754994838 x = 18626391864564730346582943572556977 #tutaj: x*(a1, a2) = (b1, b2) Wejście: k = 10 Wyjście: p = 1019 A = 159 B = 342 Px = 53 Py = 635 Qx = 492 Qy = 941 x = 250 #P = x*Q 2. Pierwsza część programu - zamiana wiadomości (złożonej z maks. 10 znaków typu A-Z, a-z, 0-9) na liczbę: (przy tej ilości znaków potrzebne jest p mające około 100 bitów) Wejście: 'Przyklad123' Wyjście: m = 8250681875682716001970051 #(u Was wyjście może być inne, ważne by mieć jednoznaczne kodowanie. U mnie zamieniałem znak na liczbę za pomocą komendy ord, a następnie zapisywałem 10 liczb za pomocy jednej korzystając z systemu 200nego) Wejście: 'a' Wyjście: m = 97 Druga część programu - zamiana liczby na punkt na danej krzywej: Wejście: p = 20769187434139310514121985316880223 A = 17364248047998077729699720348015610 B = 18961004445282423322533381916488735 m = 8250681875682716001970051 Wyjście: Mx = 165013637513654320039401020 My = 5273216427742214302796987051820376 #(u Was wyjście może być inne, ważne by jednoznacznie kodowało. Ja stosowałem metodę Koblitza z k = 20. Tzn. sprawdzałem, czy punkt o pierwszej współrzędnej 20*m należy do krzywej, jeżeli nie to sprawdzałem 20*m+1, potem 20*m+2, itd) Wejście: p = 20769187434139310514121985316880223 A = 17364248047998077729699720348015610 B = 18961004445282423322533381916488735 m = 97 Wyjście: Mx = 1940 My = 20351524224886012795812766546048939 #(u Was wyjście może być inne, ważne by jednoznacznie kodowało. Ja stosowałem metodę Koblitza z k = 20. Tzn. sprawdzałem, czy punkt o pierwszej współrzędnej 20*m należy do krzywej. Jeżeli nie, to sprawdzałem 20*m+1, potem 20*m+2, itd) Wejście: p = 1019 A = 159 B = 342 m = 10 Wyjście: Mx = 201 My = 135 3. Wejście: p = 20769187434139310514121985316880223 A = 17364248047998077729699720348015610 B = 18961004445282423322533381916488735 Px = 2320240021928709874194025995780592 Py = 14799265073943436805126565754994838 Qx = 12269447532190809160065009894517400 Qy = 9983858041819674032650867073682761 Mx = 165013637513654320039401020 My = 5273216427742214302796987051820376 Wyjście: C1x = 18727737897248568356795250826938615 C1y = 8095809445700368884585027721938732 C2x = 11773761904814661369001692738709233 C2y = 1341803214745110748813448953558984 (w tym przykładzie b = 3186151572791870589159700853699290 -- b jest losową liczbą, dla której b * (a1, a2) = (C1x, C1y)) Wejście: p = 1019 A = 159 B = 342 Px = 53 Py = 635 Qx = 492 Qy = 941 Mx = 201 My = 135 Wyjście: C1x = 884 C1y = 411 C2x = 615 C2y = 996 (w tym przykładzie b = 126 -- b jest losową liczbą, dla której b * (a1, a2) = (C1x, C1y)) 4. Wejście: p = 20769187434139310514121985316880223 A = 17364248047998077729699720348015610 B = 18961004445282423322533381916488735 a1 = 2320240021928709874194025995780592 a2 = 14799265073943436805126565754994838 x = 18626391864564730346582943572556977 C1x = 18727737897248568356795250826938615 C1y = 8095809445700368884585027721938732 C2x = 11773761904814661369001692738709233 C2y = 1341803214745110748813448953558984 Wyjście: Mx = 165013637513654320039401020 My = 5273216427742214302796987051820376 Wejście: p = 1019 A = 159 B = 342 Px = 53 Py = 635 x = 250 C1x = 884 C1y = 411 C2x = 615 C2y = 996 Wyjście: Mx = 201 My = 135 5. Pierwsza część programu - zamiana punktu na danej krzywej na liczbę: Wejście: p = 20769187434139310514121985316880223 A = 17364248047998077729699720348015610 B = 18961004445282423322533381916488735 Mx = 165013637513654320039401020 My = 5273216427742214302796987051820376 Wyjście: m = 8250681875682716001970051 #(u Was wyjście może być inne, ważne by kodowanie było jednoznaczne) Druga część programu - zamiana liczby na wiadomość (złożonej z maks. 10 znaków typu A-Z, a-z, 0-9): Wejście: m = 8250681875682716001970051 Wyjście: 'Przyklad123' #(w pythonie przyda się komenda chr)