First commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from Cryptotools.Groups.group import Group
|
||||
from Cryptotools.Utils.utils import gcd
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
|
||||
n = 18
|
||||
def operation(e1, e2, n) -> int:
|
||||
return e1 * e2 % n
|
||||
|
||||
# Generate the group G
|
||||
g = list()
|
||||
for i in range(1, n):
|
||||
#if gcd(i, n) == 1:
|
||||
g.append(i)
|
||||
|
||||
G = Group(n = n, g = g, ope=operation)
|
||||
print(f"n = {n}")
|
||||
print(f"G = {G.getG()}")
|
||||
|
||||
if G.closure() is False:
|
||||
print("The closure law is not respected. It's not an abelian (commutative) group")
|
||||
else:
|
||||
print("It is a closure group")
|
||||
|
||||
if G.associative() is False:
|
||||
print("The associative law is not respected. It's not a group")
|
||||
else:
|
||||
print("It is an associative group")
|
||||
|
||||
if G.identity() is False:
|
||||
print("The group hasn't an identity element")
|
||||
else:
|
||||
print(f"Identity: {G.getIdentity()}")
|
||||
|
||||
if G.reverse() is False:
|
||||
print(f"The group hasn't a reverse")
|
||||
else:
|
||||
print(f"Reverses: {G.getReverses()}")
|
||||
|
||||
#reverses = G.getReverses()
|
||||
#plt.rcParams["figure.figsize"] = [7.00, 3.50]
|
||||
#plt.rcParams["figure.autolayout"] = True
|
||||
#for key, value in reverses.items():
|
||||
# x = key
|
||||
# y = value
|
||||
# plt.plot(x, y, marker="o", markersize=2, markeredgecolor="blue")
|
||||
# #plt.Circle((0, n), 0.2, color='r')
|
||||
#
|
||||
#plt.xlim(0, n)
|
||||
#plt.ylim(0, n)
|
||||
#plt.grid()
|
||||
#plt.show()
|
||||
|
||||
Reference in New Issue
Block a user