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 Qx = 2320240021928709874194025995780592 Qy = 14799265073943436805126565754994838 Px = 12269447532190809160065009894517400 Py = 9983858041819674032650867073682761 klucz prywatny: p = 20769187434139310514121985316880223 A = 17364248047998077729699720348015610 B = 18961004445282423322533381916488735 Qx = 2320240021928709874194025995780592 Qx = 14799265073943436805126565754994838 x = 18626391864564730346582943572556977 #tutaj: x*Q = P Wejście: k = 10 Wyjście: p = 1019 A = 159 B = 342 Qx = 53 Qy = 635 Px = 492 Py = 941 x = 250 #Q= x*P 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 Qx = 2320240021928709874194025995780592 Qy = 14799265073943436805126565754994838 Px = 12269447532190809160065009894517400 Py = 9983858041819674032650867073682761 Mx = 165013637513654320039401020 My = 5273216427742214302796987051820376 Wyjście: C1x = 11773761904814661369001692738709233 C1y = 1341803214745110748813448953558984 C2x = 18727737897248568356795250826938615 C2y = 8095809445700368884585027721938732 (w tym przykładzie b = 3186151572791870589159700853699290 -- b jest losową liczbą, dla której b*P+M = C1, b * Q = C2) Wejście: p = 1019 A = 159 B = 342 Qx = 53 Qy = 635 Px = 492 Py = 941 Mx = 201 My = 135 Wyjście: C1x = 615 C1y = 996 C2x = 884 C2y = 411 (w tym przykładzie b = 126 -- b jest losową liczbą, dla której b * Q = C2) 4. Wejście: p = 20769187434139310514121985316880223 A = 17364248047998077729699720348015610 B = 18961004445282423322533381916488735 Qx = 2320240021928709874194025995780592 Qy = 14799265073943436805126565754994838 x = 18626391864564730346582943572556977 C1x = 11773761904814661369001692738709233 C1y = 1341803214745110748813448953558984 C2x = 18727737897248568356795250826938615 C2y = 8095809445700368884585027721938732 Wyjście: Mx = 165013637513654320039401020 My = 5273216427742214302796987051820376 ############## ####Dana pomocnicza - dla szukających błędu w programie: x*C2 = (16991886156970635894089382773355023, 8318461435811313404763696567659332) ############## Wejście: p = 1019 A = 159 B = 342 Qx = 53 Qy = 635 x = 250 C1x = 615 C1y = 996 C2x = 884 C2y = 411 Wyjście: Mx = 201 My = 135 ############## ####Dana pomocnicza - dla szukających błędu w programie: x*C2 = (764, 982) ############## 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)