Example #1
0
 def test_zero(self):
     self.assertEqual(gcd(0, 0, 0), 0)
     self.assertEqual(gcd(3, 0, 0), 3)
     self.assertEqual(gcd(0, 6, 0), 6)
     self.assertEqual(gcd(0, 0, 9), 9)
     self.assertEqual(gcd(2, 4, 0), 2)
     self.assertEqual(gcd(3, 0, 6), 3)
     self.assertEqual(gcd(0, 4, 8), 4)
Example #2
0
 def test_common(self):
     self.assertEqual(gcd(42, 56, 112), 14)
     self.assertEqual(gcd(461952, 116298, 10314), 18)
     self.assertEqual(gcd(7966496, 314080416, 98208), 32)
     self.assertEqual(gcd(24826148, 45296490, 7523378), 526)
Example #3
0
 def test_negative(self):
     self.assertEqual(gcd(81, 21, -18), 3)
     self.assertEqual(gcd(64, -32, 40), 8)
     self.assertEqual(gcd(-99, 66, 18), 3)
Example #4
0
# programik odtwarza system podpisow cyfrowych elgamala
import odwrotnosc

#parametry poczatkowe:
p = 13  #dowolna liczba pierwsza
g = 2  # dowolny generator grupy multiplikatywnej p (mozna wyznaczyc w programie main.py)
x = 3  # tajny klucz prywatny -- dowolny z przedziału <2, p-2>
m = 4  # wiadomość -- dowolna z przedziału <0, p-2>
k = 5  # potrzebujemy liczby k, ktora jest kopierwsza z p-1 -- czyli gcd(k,p-1) = 1 -- patrz main.py
#parametry^^^

from main import gcd
if gcd(k, p - 1) > 1:
    print(f'k: {k} nie jest liczba kopierwsza z {p-1}')
    raise Exception

y = (g**x) % p  #klucz publiczny
print(f'klucz publiczny: {y}')
# podpis jest para liczb a i b

# liczymy liczbe odwrotna do k w pierscieniu p-1
k_odwrotnosc = odwrotnosc.odwrotnosc_modulo(k, p - 1)

# w koncu wyznaczmy a
a = (g**k) % p
#oraz b
b = (k_odwrotnosc * (m - (x * (a % (p - 1))) % (p - 1)) % (p - 1)) % (p - 1)
print(f'a: {a}')
print(f'b: {b}')

#### sprawdzenie czy sie zgadza podpis#######
Example #5
0
 def test(self):
     self.assertEqual(main.gcd(63, 36), 9)
     self.assertEqual(main.gcd(36, 63), 9)