From 1bb7241fd474528bd300ffc7a085e09d68e36958 Mon Sep 17 00:00:00 2001 From: Jakub Adamski Date: Thu, 7 Oct 2021 15:10:41 +0200 Subject: [PATCH] zajecia1 --- README.md | 2 ++ zajecia1/euklides.py | 2 ++ zajecia1/potegowanie.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 README.md create mode 100644 zajecia1/euklides.py create mode 100644 zajecia1/potegowanie.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..a678cc6 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Kryptografia + diff --git a/zajecia1/euklides.py b/zajecia1/euklides.py new file mode 100644 index 0000000..720db4e --- /dev/null +++ b/zajecia1/euklides.py @@ -0,0 +1,2 @@ +#rozszerzony algorytm euklidesa + diff --git a/zajecia1/potegowanie.py b/zajecia1/potegowanie.py new file mode 100644 index 0000000..6d795e3 --- /dev/null +++ b/zajecia1/potegowanie.py @@ -0,0 +1,30 @@ +#potęgowanie binarne (left-to-right) + +def potegowanie(x, k): + y = 1 + i = k.bit_length() + while i >= 0: + y = y**2 + if (k & 1) == 1: + y = y*x + k = k >> 1 + i = i - 1 + return y + + +def potegowanieimod(x, k, n): + y = 1 + i = k.bit_length() + while i >= 0: + y = y**2 % n + if (k & 1) == 1: + y = y*x % n + k = k >> 1 + i = i - 1 + return y + + +print(potegowanie(2, 6)) + +print(potegowanieimod(5, 2, 10)) +