Applied PQC 首页 本书 在线演练 博客 @AppliedPQC English

格

《应用后量子密码学》本章的全部代码:共 9 段,其中 9 段可在此运行。编辑任意单元格,然后点击运行。

书中的代码片段在一章之内层层相依,但 Sage Cell 内核每次只运行一个单元格,运行后不保留任何状态,因此每个单元格都会用 apqc_book 重放此前的代码。这一调用是在书中原有代码之外唯一添加的内容。

← 在线演练

代码 1:Sage 实验:生成一个二维格

代码 2:Sage 实验:两组不同的基

代码 3:Sage 实验:行列式

代码 4:Sage 实验:最短向量

Sage 提供了内置的格工具。可以按如下方式直接由整数矩阵创建一个格对象:

代码 5:Sage 实验:最短向量

定义好格之后,只需一条命令即可计算最短向量:

代码 6:实验 1:枚举格

生成格 Λ(b₁,b₂) 的一个有限窗口,并确认它是一个离散的点阵网格,而不是连续的张成空间。

代码 7:实验 2:行列式是基不变量

对同一个格的若干组基计算格行列式 detΛ = |det B|,每组基都由 B 左乘一个幺模矩阵 U ∈ GL_n(ℤ)(即满足 det U = ± 1 的整数矩阵)得到。

代码 8:实验 3:好基与坏基

同一个格既有近乎正交的(“好”)基,也有高度倾斜的(“坏”)基。对比两者,并通过正交性缺陷 ∏_i ‖ b_i‖ / detΛ 来量化倾斜程度。

代码 9:实验 4:最短向量是格不变量

对同一个格的若干组不同的基计算最短非零向量,并确认其长度是格的性质,而不是所选基的性质。