1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| from Crypto.Cipher import AES import hashlib, os, json, random
flag = b"?"
n = 6 q = 97 m = 30
s = [random.randint(0, 3) for _ in range(n)]
A = [] b = [] for _ in range(m): a_i = [random.randint(0, q - 1) for _ in range(n)] e_i = random.randint(-1, 1) b_i = (sum(x * y for x, y in zip(a_i, s)) + e_i) % q A.append(a_i) b.append(b_i)
key = hashlib.sha256(str(s).encode()).digest()[:16] iv = os.urandom(16) pad_len = 16 - len(flag) % 16 enc = AES.new(key, AES.MODE_CBC, iv).encrypt(flag + bytes([pad_len]) * pad_len)
print(f"n = {n}") print(f"q = {q}") print(f"m = {m}") print(f"A = {A}") print(f"b = {b}") print(f"iv = '{iv.hex()}'") print(f"enc = '{enc.hex()}'")
""" n = 6 q = 97 m = 30 A = [[94, 13, 86, 94, 69, 11], [54, 4, 3, 11, 27, 29], [77, 3, 71, 25, 91, 83], [69, 53, 28, 57, 75, 35], [20, 89, 54, 43, 35, 19], [43, 13, 11, 48, 12, 45], [77, 33, 5, 93, 58, 68], [48, 10, 70, 37, 80, 79], [73, 24, 90, 8, 5, 84], [37, 10, 29, 12, 48, 35], [81, 46, 20, 47, 45, 26], [34, 89, 87, 82, 9, 77], [21, 68, 93, 31, 20, 59], [34, 81, 88, 71, 28, 87], [77, 29, 4, 40, 51, 34], [27, 72, 91, 40, 27, 83], [50, 82, 58, 18, 33, 17], [95, 71, 68, 33, 95, 74], [74, 51, 46, 28, 17, 65], [11, 96, 6, 14, 19, 80], [87, 54, 76, 8, 49, 48], [59, 67, 32, 70, 1, 87], [14, 87, 68, 96, 34, 82], [14, 37, 55, 20, 58, 0], [92, 33, 64, 22, 64, 13], [38, 81, 64, 77, 25, 19], [20, 69, 67, 0, 76, 41], [2, 14, 46, 39, 30, 7], [72, 10, 10, 93, 62, 8], [16, 16, 84, 60, 70, 21]] b = [56, 74, 51, 28, 10, 30, 34, 45, 82, 56, 62, 52, 5, 71, 35, 41, 86, 47, 8, 27, 64, 29, 57, 92, 34, 55, 57, 70, 87, 28] iv = 'bcdad772f7a0ec967887f7b8f36234c8' enc = '00ac1bac207e84d91c6243c4aead3576a20f996a5420eea7bfa0df3b61d68c83f283bd31f1fedf7465b6445d7a58dcdc' """
|