from Crypto.Util.number import * import random random.seed(0x36D)
n = 3950848271664122675439855009329233027357977239695163232943132810210035583520735079984423511153607529820284200137188647 e = 3
withopen('flag.txt', 'rb') as f: m = bytes_to_long(f.read())
assert n > m
Zn = Zmod(n) P = PermutationGroupElement('(1,14,25,8,23,15)(2,22,17)(3,18,13,33,11,30,26,27,10,6,16,31,28,21,29,36,7,9)(4,35,12,32,20,5,24)(19,34)') P = Matrix(Zn, P.matrix()) A = Matrix(Zn, 36, 36, lambda x, y: random.randint(0, 0x36D)) B = A * P * A^-1
import random from Crypto.Util.number import * random.seed(0x36D)
n = 3950848271664122675439855009329233027357977239695163232943132810210035583520735079984423511153607529820284200137188647 e=3 Zn = Zmod(n) P = PermutationGroupElement('(1,14,25,8,23,15)(2,22,17)(3,18,13,33,11,30,26,27,10,6,16,31,28,21,29,36,7,9)(4,35,12,32,20,5,24)(19,34)') P = Matrix(Zn, P.matrix()) A = Matrix(Zn, 36, 36, lambda x, y: random.randint(0, 0x36D)) B = A * P * A^-1 C#C太太太大了,不丢了 c=788338113035295195878123865420815134674503086857319693837443675089195439938279689750424184012172121716196117254817680 phi=euler_phi(n)
from Crypto.Util.number import * import random random.seed(0x36D)
n = 25126409997644048715497037905442671105116158875704245711785280791201683049008805107543997350200944348915833337286069203 e = 3
withopen('flag.txt', 'rb') as f: m = bytes_to_long(f.read()) assert n > m
Zn = Zmod(n) P = PermutationGroupElement('(1,3,6,29,25,34,22,33,10,16,7)(2,21,19,17,31,9,5,30,27,35,32,11)(4,20,28,23,18,15)(8,26,14,12)(36,24,13)') P = Matrix(Zn, P.matrix()) A = Matrix(Zn, 36, 36, lambda x, y: random.randint(0, 0x36D)) B = A * P * A^-1
defserver_add(matrix_map): print("第一个矩阵:") A = input("> ").strip() print("第二个矩阵:") B = input("> ").strip() C = matrix_map[A]+matrix_map[B] print(f"这两个矩阵之和的迹是:{C.trace()},迹你实在是太美~") return C
defserver_product(matrix_map): print("第一个矩阵:") A = input("> ").strip() print("第二个矩阵:") B = input("> ").strip() C = matrix_map[A]*matrix_map[B] print(f"这两个矩阵之积的迹是:{C.trace()},迹你实在是太美~") return C
defserver_kproduct(matrix_map): print("矩阵:") A = input("> ").strip() print("乘数:") k = input("> ").strip() k = int(k) B = k * matrix_map[A] print(f"数乘结果的迹是:{B.trace()},迹你实在是太美~") return B
defserver_power(matrix_map): print("矩阵:") A = input("> ").strip() print("幂次:") k = input("> ").strip() k = int(k) B = matrix_map[A] ^ k print(f"求幂结果的迹是:{B.trace()},迹你实在是太美~") return B
defserver_save(A, matrix_map): print("存个小档? (Y/N)") s = input("> ").strip().upper() if s == "Y": print("运算结果叫啥名呢?") S = input("> ").strip() matrix_map[S] = A print("存上档咯!")
from Crypto.Util.number import * import random random.seed(0x36D)
n = 25126409997644048715497037905442671105116158875704245711785280791201683049008805107543997350200944348915833337286069203 e = 3
Zn = Zmod(n) P = PermutationGroupElement('(1,3,6,29,25,34,22,33,10,16,7)(2,21,19,17,31,9,5,30,27,35,32,11)(4,20,28,23,18,15)(8,26,14,12)(36,24,13)') P = Matrix(Zn, P.matrix()) A = Matrix(Zn, 36, 36, lambda x, y: random.randint(0, 0x36D)) B = A * P * A^-1 print((P^12).trace()) D=B^3
from Crypto.Util.number import * # Put the trace of the cipher here tr = 14813573939127972566346276778703360636838383920024039547829404416974023159738670520401495234532257783312488372282988720 # 3 * m^3 n = 25126409997644048715497037905442671105116158875704245711785280791201683049008805107543997350200944348915833337286069203 e = 3 fac = factor(n) cs = [] ns = [] for p, alpha in fac: PR.<x> = PolynomialRing(Zmod(p)) f = 3 * x^3 - tr cs.append(int(f.roots()[0][0])) ns.append(p) m = crt(cs, ns) print(long_to_bytes(m))