#!/usr/bin/env python3 from Cryptotools.Groups.galois import Galois import matplotlib.pyplot as plt # pip install numpy==1.26.4 def operation(a, b, n): return (a ** b) % n q = 13 g = Galois(q, operation) add = g.add() div = g.div() mul = g.mul() sub = g.sub() g.check_closure_law('+') g.check_closure_law('*') g.check_closure_law('-') g.check_closure_law('/') print("Addition") g.printMatrice(add) print("Division") g.printMatrice(div) print("Multiplication") g.printMatrice(mul) print("Substraction") g.printMatrice(sub) print("Primitives root") print(g.primitiveRoot(), end="\n\n") #print("Identity elements") g.check_identity_add() g.check_identity_mul()