# 构造格基 M = matrix(ZZ, n+1, n+1) for i in range(n): M[i, i] = 2 M[i, n] = public_key[i] M[n, :n] = 1 M[n, n] = encrypted_flag
# 应用LLL算法 M_lll = M.LLL()
# 寻找包含解的行 for row in M_lll: if row[-1] == 0: # 提取比特位 bits = [] for i in range(n): if abs(row[i]) == 1: bits.append(1 if row[i] > 0 else 0) else: bits.append(0)
# 转换为字节 flag = 0 for i in range(n): flag |= bits[i] << i
💬 评论与讨论
分享你的想法和见解