Updated 实现Kyber所需的多项式和线性代数知识 (markdown)

Sun Yimin 2025-04-16 08:26:59 +00:00
parent 3d9b02fca8
commit 062377d5fd

@ -13,7 +13,7 @@
# 多项式
一个多项式是环 $R_q$ 的一个元素[[3](#user-content-anchor-ref3)],看起来像这样:
$$f = f_0 + f_1 X + f_2 X^2 + \ldots + f_{255} X^{255}$$
$$f = f_0 + f_1 X + f_2 X^2 + \cdots + f_{255} X^{255}$$
但你甚至不需要知道这些。对你作为一个实施者来说一个ML-KEM多项式就是一个有256个系数的数组。每个系数都是一个整数模 $q$,其中 $q = 3329$。一个系数数组被称为在 $\mathbb{Z}_q^{256}$ 中,因为它由 256 个系数组成,每个系数都在 $\mathbb{Z}_q$,即整数模 $q$。
@ -46,7 +46,7 @@ ML-KEM规范中听起来最令人害怕的部分之一是数论变换。好消
$T_q$ 中的元素看起来象这样:
```math
\hat{g} = (\hat{g}_{0,0} + \hat{g}_{0,1}X, \hat{g}_{1,0} + \hat{g}_{1,1}X, ..., \hat{g}_{127,0} + \hat{g}_{127,1}X) \in T_q
\hat{g} = (\hat{g}_{0,0} + \hat{g}_{0,1}X, \hat{g}_{1,0} + \hat{g}_{1,1}X, \cdots, \hat{g}_{127,0} + \hat{g}_{127,1}X) \in T_q
```
从技术上来说NTT数论变换代表的是一个由128个多项式组成的序列每个多项式有两个系数。但您不需要深入考虑这一点您可以使用同样的数据结构例如 `[256]uint16`,来表示