cryptohack wp (MATHEMATICS篇)(持续更新)

Cryglz / 2023-05-19 / 原文

还是那句话,本篇中未提及的题目均在sources的其他篇目

Vectors


算向量点积,题目中也介绍了点积的计算,直接给代码:

import numpy as np

v = np.array([2, 6, 3])
w = np.array([1, 0, 0])
u = np.array([7, 7, 2])

result = np.dot(3 * (2 * v - w), 2 * u) #np.dot:计算向量的点积

print(result)

Size and Basis

![](https://img2023.cnblogs.com/blog/2698491/202305/2698491-20230519155437632-899621765.png

代码如下:

import math

v = [4, 6, 2, 5]

size = math.sqrt(sum([x**2 for x in v]))

print(size)

Gram Schmidt


我这里直接用的chatgpt给出的代码:

import numpy as np

# Given basis vectors
v1 = np.array([4, 1, 3, -1])
v2 = np.array([2, 1, -3, 4])
v3 = np.array([1, 0, -2, 7])
v4 = np.array([6, 2, 9, -5])

# Apply Gram-Schmidt algorithm
u1 = v1
u2 = v2 - np.dot(v2, u1) / np.linalg.norm(u1)**2 * u1
u3 = v3 - np.dot(v3, u1) / np.linalg.norm(u1)**2 * u1 - np.dot(v3, u2) / np.linalg.norm(u2)**2 * u2
u4 = v4 - np.dot(v4, u1) / np.linalg.norm(u1)**2 * u1 - np.dot(v4, u2) / np.linalg.norm(u2)**2 * u2 - np.dot(v4, u3) / np.linalg.norm(u3)**2 * u3
``
# Extract the flag (second component of u4)
flag = u4[1]

# Print the flag value rounded to 5 significant figures
print(round(flag, 5))

What’s Lattice?

sage直接解:
sage: v = vector
sage: v1 = v([6,2,-3])
sage: v2 = v([5,1,4])
sage: v3 = v([2,7,1])
sage: A = matrix([v1,v2,v3])
sage:det(A)