格密码2:格的基本定义与性质

格的基本定义及性质

Lattices: Basic definitions and properties

这一节对应教材的 6.4.

这一节我们正式开始介绍格的内容。

格的定义

Definition. v 1 , … , v n ∈ R m v_1,\dots,v_n \in \mathbb{R}^m v1,,vnRm 是一组线性无关向量。由 v 1 , … , v n v_1, \dots,v_n v1,,vn 生成(generate)的格(lattice) L L L v 1 , … , v n v_1,\dots,v_n v1,,vn 的线性组合,其中系数取自 Z \mathbb{Z} Z,
L = { a 1 v 1 + a 2 v 2 + ⋯ + a n v n :   a 1 , a 2 , … , a n ∈ Z } . L = \{a_1v_1 + a_2v_2 + \dots + a_nv_n:\ a_1,a_2,\dots,a_n \in \mathbb{Z}\}. L={a1v1+a2v2++anvn: a1,a2,,anZ}.
L L L 的基是任何一组能够生成 L L L 的线性无关的向量。任何两个基都有相同数量的元素。基中向量的个数称为格 L L L 的维数(dimension)。

这里也会看到其他的定义方式,如 Oded Regev 的课程笔记中,会将 m m m 称为格的维数(dimension),而 n n n 称为格的秩(rank)。当 n = m n=m n=m 时称格为满秩格(full rank lattice)。一般密码学中都是讨论满秩格。
但在本书以及在 Hermite’s Constant and Lattice Algorithms 的 Definition 6 中,都是把基中向量的个数称为维数。我个人倾向于认为 n n n 应该是维数,因为类比线性空间中维数的定义,维数是基中向量的个数,那么 L L L 的基中向量个数是 n n n,因此维数应该是 n n n
n n n 可以称为秩,这个没问题,因为格也可以用矩阵表示:
L = { B x ∣ x ∈ Z n } . L=\{Bx \vert x\in \Z^n\}. L={BxxZn}.
其中 B = ( v 1 , … , v n ) B=(v_1,\dots,v_n) B=(v1,,vn) 是基底组成的 m × n m\times n m×n 的矩阵。
根据矩阵秩的定义可以得到 秩=列秩=行秩=行/列向量的极大线性无关组中向量的个数= n n n
当然这只是个小问题。。。

v 1 , v 2 , … , v n v_1,v_2,\dots,v_n v1,v2,,vn V V V 的一个基底, w 1 , w 2 , … , w n w_1,w_2,\dots,w_n w1,w2,,wn V V V n n n 个向量。则 w j w_j wj 可以写为基的线性组合:
w 1 = a 11 v 1 + a 12 v 2 + ⋯ + a 1 n v n , w 2 = a 21 v 1 + a 22 v 2 + ⋯ + a 2 n v n , ⋮ w n = a n 1 v 1 + a n 2 v 2 + ⋯ + a n n v n , w_1 = a_{11}v_1 + a_{12}v_2+\dots+a_{1n}v_n,\\ w_2 = a_{21}v_1 + a_{22}v_2+\dots+a_{2n}v_n,\\ \vdots \\ w_n = a_{n1}v_1 + a_{n2}v_2+\dots+a_{nn}v_n,\\ w1=a11v1+a12v2++a1nvn,w2=a21v1+a22v2++a2nvn,wn=an1v1+an2v2++annvn,
由于是格,这里的系数都是整数。

我们在线性空间中研究过基变换,我们来看一下格中两个基的关系。分别令 W , U W, U W,U 表示 w j w_j wj v i v_i vi 两个列向量, A A A 表示整系数矩阵:
A = ( a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ) A=\begin{pmatrix} {a_{11}}&{a_{12}}&{\cdots}&{a_{1n}}\\ {a_{21}}&{a_{22}}&{\cdots}&{a_{2n}}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ {a_{n1}}&{a_{n2}}&{\cdots}&{a_{nn}}\\ \end{pmatrix} A= a11a21an1a12a22an2a1na2nann
则有 W = A ⋅ U W = A\cdot U W=AU. 我们考虑利用 w j w_j wj 来表示 v i v_i vi, 此时只需要对 A A A 求逆便能得到 U = A − 1 ⋅ W U = A^{-1}\cdot W U=A1W. 在格中,线性组合的系数必须都是整数,所以 A − 1 A^{-1} A1 中的元素也一定均为整数。注意到:
1 = det ⁡ ( I ) = det ⁡ ( A A − 1 ) = det ⁡ ( A ) ⋅ det ⁡ ( A − 1 ) 1 = \det(I) = \det(AA^{-1}) = \det(A)\cdot \det(A^{-1}) 1=det(I)=det(AA1)=det(A)det(A1)
而根据行列式的定义,整数矩阵的行列式一定是整数(行列式的定义为某行/列元素与其代数余子式的乘积再求和,只涉及到整数的加法和乘法,所以得到的结果一定是整数),于是 det ⁡ ( A ) , det ⁡ ( A − 1 ) \det(A), \det(A^{-1}) det(A),det(A1) 均为整数,从而只能得到 det ⁡ ( A ) = ± 1 \det(A) = \pm 1 det(A)=±1. 这就证明了如下结果:

Proposition. L L L 的任意两个基,其基变换矩阵中各元素均为整数,且行列式等于 ± 1 \pm 1 ±1.

为了计算方便,我们经常会考虑向量坐标取自整数的格。例如:
Z n = { ( x 1 , x 2 , … , x n ) :   x 1 , x 2 , … , x n ∈ Z } \mathbb{Z}^n=\{(x_1,x_2,\dots,x_n):\ x_1,x_2,\dots,x_n \in \mathbb{Z}\} Zn={(x1,x2,,xn): x1,x2,,xnZ}
为所有整数坐标的向量所构成的格。我们可以直观看一下 Z 2 \mathbb{Z}^2 Z2 上的格:
图 1. 格的一个实例,笔者所绘

图 2. 格的一个实例,笔者所绘

Definition. 一个整数格(integral or integer lattice)是指所有整数坐标的向量所构成的格。等价来说,一个整数格是加法群 Z m \mathbb{Z}^m Zm​ 的一个子群。

Remark. 如果 L ⊂ R m L\subset \mathbb{R}^m LRm 是一个 n n n 维的格,则 L L L 的一个基可以被写为 n n n m m m 列的矩阵 U U U, 设 v i = ( u i 1 , … , u i m ) v_i = (u_{i1}, \dots, u_{im}) vi=(ui1,,uim) 即有:
U = ( v 1 , … , v n ) T = ( u 11 u 12 ⋯ u 1 m u 21 u 22 ⋯ u 2 m ⋮ ⋮ ⋱ ⋮ u n 1 u n 2 ⋯ u n m ) U=(v_1, \dots,v_n)^T =\begin{pmatrix} {u_{11}}&{u_{12}}&{\cdots}&{u_{1m}}\\ {u_{21}}&{u_{22}}&{\cdots}&{u_{2m}}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ {u_{n1}}&{u_{n2}}&{\cdots}&{u_{nm}}\\ \end{pmatrix} U=(v1,,vn)T= u11u21un1u12u22un2u1mu2munm
L L L 的一个新的基底可以通过左乘一个 n × n n\times n n×n 的矩阵 A A A 来得到。 A A A 中元素均为整数且行列式为 ± 1 \pm1 ±1 (这里其实就是重复了上面的那个命题).

格还有一种更为抽象的定义,其结合了几何与代数的理念。

Definition. R m \mathbb{R}^m Rm 的子集 L L L 是一个加法子群,如果其对于加法和减法封闭。我们称 L L L 是一个离散加法子群(discrete additive subgroup) 如果存在一个正数 ϵ > 0 \epsilon > 0 ϵ>0, 对于所有的 v ∈ L v \in L vL 满足如下性质:
L ∩ { w ∈ R m :   ∥ v − w ∥ < ϵ } = { v } . L \cap\{w \in \mathbb{R}^m:\ \left\lVert v-w \right\rVert < \epsilon\}=\{v\}. L{wRm: vw<ϵ}={v}.
换句话说,如果在 L L L 中取任意的一个向量 v v v,并在其周围做一个半径为 ϵ \epsilon ϵ 的实心球,则球内除 v v v 之外没有任何其他 L L L 中的点。

Theorem. R m \mathbb{R}^m Rm​ 的一个子集是格当且仅当其是一个离散加法子群。

教材没有给出证明,以下证明为个人理解。

Proof. 充分性是容易证的,首先格 L L L R m \R^m Rm 的加法子群。又因为格中存在最短向量,只需要令 ϵ = Shortest vector length \epsilon = \text{Shortest vector length} ϵ=Shortest vector length 即可。必要性的证明从直观上想,根据离散加法子群的定义 L L L 一定是由一些离散的点组成的,于是 L L L 应该是一个格。

基本域

Definition. L L L n n n 维 lattice, v 1 , … , v n v_1,\dots,v_n v1,,vn L L L 的一个基。 L L L 在这组基下的基本域(fundamental domain/fundamental parallelepiped)是集合:
F ( v 1 , … , v n ) = { t 1 v 1 + t 2 v 2 + ⋯ + t n v n :   0 ≤ t i < 1 } \mathcal{F}(v_1,\dots,v_n)=\{t_1v_1+t_2v_2+\dots+t_nv_n:\ 0\leq t_i<1 \} F(v1,,vn)={t1v1+t2v2++tnvn: 0ti<1}
下图展示了一个2维格上的基本域。
图 2. 格与基本域,源自《An Introduction to Mathematical Cryptography》

图 3. 格与基本域,源自《An Introduction to Mathematical Cryptography》

F ( v 1 , … , v n ) \mathcal{F}(v_1,\dots,v_n) F(v1,,vn) 还可以写成 R n / L \mathbb{R}^n/L Rn/L​​.

Proof.
R n / L = { v + L :   v ∈ R n } = { ( α 1 v 1 + α 2 v 2 + ⋯ + α n v n ) + L :   α i ∈ R } = { ( t 1 + a 1 ) v 1 + ⋯ + ( t n + a n ) v n + L :   0 ≤ t i < 1 ,   a i ∈ Z } = { ( t 1 v 1 + ⋯ + t n v n ) + ( a 1 v 1 + ⋯ + a n v n ) + L } = { ( t 1 v 1 + ⋯ + t n v n ) + L :   0 ≤ t i < 1 } = F \begin{aligned} \mathbb{R}^n/L &= \{v + L:\ v \in \mathbb{R}^n\}\\ &= \{(\alpha_1v_1+\alpha_2v_2+\dots+\alpha_nv_n)+L:\ \alpha_i \in \mathbb{R}\}\\ &=\{(t_1+a_1)v_1+\dots+(t_n+a_n)v_n+L:\ 0\leq t_i<1,\ a_i \in \mathbb{Z}\}\\ &= \{(t_1v_1+\dots+t_nv_n)+(a_1v_1+\dots+a_nv_n)+L \}\\ &=\{(t_1v_1+\dots+t_nv_n) + L:\ 0\leq t_i<1\}\\ &=\mathcal{F} \end{aligned} Rn/L={v+L: vRn}={(α1v1+α2v2++αnvn)+L: αiR}={(t1+a1)v1++(tn+an)vn+L: 0ti<1, aiZ}={(t1v1++tnvn)+(a1v1++anvn)+L}={(t1v1++tnvn)+L: 0ti<1}=F

下面的命题说明了基本域在学习格中的重要性。

Proposition. L ⊂ R n L\subset \mathbb{R}^n LRn n n n 维 lattice,令 F \mathcal{F} F L L L 的基本域。则每一个向量 w ∈ R n w\in \mathbb{R}^n wRn 都可以被写成如下形式:
w = t + v for a unique  t ∈ F  and a unique  v ∈ L w = t+v\quad \text{for a unique}\ t \in \mathcal{F}\ \text{and a unique}\ v \in L w=t+vfor a unique tF and a unique vL
等价来说,当 v v v 遍历格 L L L 中的向量时,平移后的基本域(the translated fundamental domains)的并集:
F + v = { t + v :   t ∈ F } \mathcal{F}+v = \{t+v:\ t \in \mathcal{F}\} F+v={t+v: tF}
恰好覆盖整个 R n \mathbb{R}^n Rn​. 下图展示了经过 L L L 中的向量平移后的基本域 F \mathcal{F} F 恰好覆盖了整个 R n \mathbb{R}^n Rn.
图 3. 利用格中向量对基本域平移,源自《An Introduction to Mathematical Cryptography》

图 4. 利用格中向量对基本域平移,源自《An Introduction to Mathematical Cryptography》

Proof. v 1 , … , v n v_1,\dots,v_n v1,,vn L L L 的一个基,其生成的基本域为 F \mathcal{F} F. 则 v 1 , … , v n v_1,\dots,v_n v1,,vn R n \mathbb{R}^n Rn 上线性无关,于是它们也是 R n \mathbb{R}^n Rn 的一个基。因此,任意的 w ∈ R n w\in \mathbb{R}^n wRn 都能被写为形如:
w = α 1 v 1 + α 2 v 2 + ⋯ + α n v n for some  α 1 , … , α n ∈ R . w = \alpha_1v_1+\alpha_2v_2+\dots+\alpha_nv_n \quad \text{for some}\ \alpha_1, \dots, \alpha_n \in \mathbb{R}. w=α1v1+α2v2++αnvnfor some α1,,αnR.
我们将每个 α i \alpha_i αi 稍作变形:
α i = t i + a i with  0 ≤ t i < 1  and  a i ∈ Z \alpha_i = t_i+a_i \quad \text{with}\ 0\leq t_i <1\ \text{and}\ a_i \in \mathbb{Z} αi=ti+aiwith 0ti<1 and aiZ
从而将变形后的 α i \alpha_i αi 代入原式得到:
w = t 1 v 1 + t 2 v 2 + ⋯ + t n v n ⏞ this is a vector  t ∈ F + a 1 v 1 + a 2 v 2 + ⋯ + a n v n ⏞ this is a vector  v ∈ L w = \overbrace{t_1v_1+t_2v_2+\dots+t_nv_n}^{\text{this is a vector}\ t \in \mathcal{F}}+\overbrace{a_1v_1+a_2v_2+\dots+a_nv_n}^{\text{this is a vector}\ v \in L} w=t1v1+t2v2++tnvn this is a vector tF+a1v1+a2v2++anvn this is a vector vL

这便证得了 w w w 可以被表示为我们想要的形式。但证明还没结束,下面我们还需要证明 t t t v v v 的唯一性。证明唯一性通用的方法就是假设有两个,最后推出它们是相等的。

我们假设 w = t + v = t ′ + v ′ w = t+v=t^{'}+v^{'} w=t+v=t+v 是其两种表示形式,则有:
( t 1 + a 1 ) v 1 + ( t 2 + a 2 ) v 2 + ⋯ + ( t n + a n ) v n = ( t 1 ′ + a 1 ′ ) v 1 + ( t 2 ′ + a 2 ′ ) v 2 + ⋯ + ( t n ′ + a n ′ ) v n . \begin{aligned} (t_1+a_1)v_1+(t_2+a_2)v_2+\dots+(t_n+a_n)v_n \\ =(t_1^{'}+a_1^{'})v_1+(t_2^{'}+a_2^{'})v_2+\dots+(t_n^{'}+a_n^{'})v_n. \end{aligned} (t1+a1)v1+(t2+a2)v2++(tn+an)vn=(t1+a1)v1+(t2+a2)v2++(tn+an)vn.
由于 v 1 , … , v n v_1,\dots,v_n v1,,vn 是相互独立的,所以有:
t i + a i = t i ′ + a i ′ for all  i = 1 , 2 , … , n . t_i+a_i=t_i^{'}+a_i^{'}\quad \text{for all}\ i = 1,2,\dots,n. ti+ai=ti+aifor all i=1,2,,n.
因此
t i − t i ′ = a i ′ − a i ∈ Z t_i-t_i^{'}=a_i^{'}-a_i \in \mathbb{Z} titi=aiaiZ
是一个整数。但 t i t_i ti t i ′ t_i^{'} ti 大于等于0且严格小于1,于是要想让 t i − t i ′ t_i-t_i^{'} titi 是整数只能是 t i = t i ′ t_i=t_i^{'} ti=ti, 因此 t = t ′ t=t^{'} t=t. 并且:
v = w − t = w − t ′ = v ′ v=w-t=w-t^{'}=v^{'} v=wt=wt=v
这就完成了上述命题的完整证明。

基本域的体积(volume)是格中重要的一个不变量。

Definition. L L L n n n 维 lattice,令 F \mathcal{F} F L L L 的基本域。则 F \mathcal{F} F n n n 维体积称为是 L L L 的行列式(determinant) ,有时也被称为是协体积(covolume). 用 det ⁡ ( L ) \det(L) det(L) 来表示。

注意到格 L L L 本身是没有体积的,因为它是一个可数点的集合。如果 L L L 是包含在 R n \mathbb{R}^n Rn 中且其维度为 n n n,那么 L L L 的协体积被定义为商群 R n / L \mathbb{R}^n/L Rn/L 的体积。

如果将基向量 v 1 , … , v n v_1,\dots,v_n v1,,vn 看作是描述基本域(parallelepiped) F \mathcal{F} F 边长的给定长度的向量,那么对于给定长度的基向量,当这些向量两两正交时,所得到的体积(volume)是最大的。这导致了格的行列式有以下重要的上界:

Proposition (Hadamard’s Inequality). L L L 是一个 lattice,取 L L L 任意的一组基 v 1 , … , v n v_1,\dots,v_n v1,,vn, 且 F \mathcal{F} F L L L 的一个基本域,则有
det ⁡ ( L ) = Vol ( F ) ≤ ∥ v 1 ∥ ∥ v 2 ∥ … ∥ v n ∥ \det(L) = \text{Vol}(\mathcal{F}) \leq \left\lVert v_1 \right\rVert \left\lVert v_2 \right\rVert \dots \left\lVert v_n \right\rVert det(L)=Vol(F)v1v2vn
基底越接近于正交,则 Hadamard 不等式越趋向于等式。即上式右侧部分表示基底正交时求得的体积。

行列式可以看作是有向面积或体积的概念在一般的(即更高维)欧几里得空间中的推广。即矩阵的行列式可以解释为由其行(或列)向量张成的平行多面体的(定向的)体积。这里我们可以通过2维和3维的小例子来感受一下这个不等式。

  • 2维以平行四边形和矩形为例。
    在这里插入图片描述

    显然,当边相互正交时,面积最大,即同边长情况下,矩形的面积要大于平行四边形的面积,且当平行四边形的边趋近于垂直时,其面积也趋近于等于 S 1 S_1 S1​.

  • 3维以平行六面体和长方体为例。

    考虑体积公式体积等于底面积乘高: V = S ⋅ h V=S\cdot h V=Sh, 在对应棱长相等的情况下,长方体的体积要大于平行六面体的体积。

如果格 L ∈ R n L \in\mathbb{R}^n LRn 中且 L L L 的维数为 n n n, 那么计算格 L 的行列式就相对容易。下一个命题描述了这个公式,这种情况也是我们最感兴趣的。

Proposition. L ⊂ R n L \subset\mathbb{R}^n LRn n n n 维 lattice,令 v 1 , … , v n v_1,\dots,v_n v1,,vn L L L 的一组基, F = F ( v 1 , … , v n ) \mathcal{F} = \mathcal{F}(v_1,\dots,v_n) F=F(v1,,vn) 是相对应的基本域。用坐标表示第 i i i 个基向量:
v i = ( r i 1 , r i 2 , … , r i n ) v_i = (r_{i1}, r_{i2},\dots, r_{in}) vi=(ri1,ri2,,rin)
将向量 v i v_i vi 的坐标作为矩阵的行向量,
F = F ( v 1 , … , v n ) = ( r 11 r 12 ⋯ r 1 n r 21 r 22 ⋯ r 2 n ⋮ ⋮ ⋱ ⋮ r n 1 r n 2 ⋯ r n n ) . F=F(v_1,\dots,v_n)=\begin{pmatrix} {r_{11}}&{r_{12}}&{\cdots}&{r_{1n}}\\ {r_{21}}&{r_{22}}&{\cdots}&{r_{2n}}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ {r_{n1}}&{r_{n2}}&{\cdots}&{r_{nn}}\\ \end{pmatrix}. F=F(v1,,vn)= r11r21rn1r12r22rn2r1nr2nrnn .
F \mathcal{F} F 的体积由下面的公式给出:
Vol ( F ( v 1 , … , v n ) ) = ∣ det ⁡ ( F ( v 1 , … , v n ) ) ∣ . \text{Vol}(\mathcal{F}(v_1,\dots,v_n))=\left\lvert \det(F(v_1,\dots,v_n))\right\rvert. Vol(F(v1,,vn))=det(F(v1,,vn)).

对于一般情况,即非满秩格,其体积表示为 det ⁡ L = det ⁡ ( B B T ) \det{L} = \sqrt{\det(BB^{T})} detL=det(BBT) .

Proof. 需要用到对多变量的积分。

Example. 考虑由如下三个线性无关向量生成的3维格 L ⊂ R 3 L\subset \mathbb{R}^3 LR3
v 1 = ( 2 , 1 , 3 ) ,   v 2 = ( 1 , 2 , 0 ) ,   v 3 = ( 2 , − 3 , − 5 ) . v_1=(2,1,3),\ v_2 = (1,2,0),\ v_3=(2,-3,-5). v1=(2,1,3), v2=(1,2,0), v3=(2,3,5).
则有:
F ( v 1 , v 2 , v 3 ) = ( 2 1 3 1 2 0 2 − 3 − 5 ) . F(v_1,v_2,v_3)=\begin{pmatrix} 2&1&3\\ 1&2&0\\ 2&-3&-5\\ \end{pmatrix}. F(v1,v2,v3)= 212123305 .
因此,格的体积为:
det ⁡ ( L ) = ∣ det ⁡ ( F ) ∣ = 36 \det(L) = \left\lvert\det(F) \right\rvert = 36 det(L)=det(F)=36
Corollary. L ⊂ R n L \subset\mathbb{R}^n LRn n n n 维 lattice,则 L L L 的每一个基本域都有相同的体积。因此 det ⁡ ( L ) \det(L) det(L) 是格 L L L 的不变量。

Proof. v 1 , … , v n v_1,\dots,v_n v1,,vn w 1 , … , w n w_1,\dots,w_n w1,,wn 分别生成了 L L L 的两个基本域,并令 F ( v 1 , … , v n ) F(v_1,\dots,v_n) F(v1,,vn) F ( w 1 , … , w n ) F(w_1,\dots,w_n) F(w1,,wn) 是与之相关联的矩阵。根据前面的命题,两个基做转换只需对其中一个基左乘一个行列式为 ± 1 \pm1 ±1 n × n n\times n n×n 的矩阵 A A A 即可。
F ( v 1 , … , v n ) = A F ( w 1 , … , w n ) F(v_1,\dots,v_n)=AF(w_1,\dots,w_n) F(v1,,vn)=AF(w1,,wn)
v 1 , … , v n v_1,\dots,v_n v1,,vn 生成的基本域的体积为:
Vol ( F ( v 1 , … , v n ) ) = ∣ det ⁡ ( F ( v 1 , … , v n ) ) ∣ = ∣ det ⁡ ( A F ( w 1 , … , w n ) ) ∣ = ∣ det ⁡ ( A ) ∣ ∣ det ⁡ ( F ( w 1 , … , w n ) ) ∣ = ∣ det ⁡ ( F ( w 1 , … , w n ) ) ∣ = Vol ( F ( w 1 , … , w n ) ) \begin{aligned} \text{Vol}(\mathcal{F}(v_1,\dots,v_n)) &=\left\lvert \det(F(v_1,\dots,v_n)) \right\rvert\\ &=\left\lvert \det(AF(w_1,\dots,w_n)) \right\rvert\\ &=\left\lvert \det(A) \right\rvert \left\lvert \det(F(w_1,\dots,w_n)) \right\rvert\\ &=\left\lvert \det(F(w_1,\dots,w_n)) \right\rvert\\ &=\text{Vol}(\mathcal{F}(w_1,\dots,w_n)) \end{aligned} Vol(F(v1,,vn))=det(F(v1,,vn))=det(AF(w1,,wn))=det(A)det(F(w1,,wn))=det(F(w1,,wn))=Vol(F(w1,,wn))

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值