这两天闲里偷忙花了些时间读密码学论文,然后发现大家对素数阶乘法循环群情有独钟。在某篇论文中,甚至出现了
x
′
=
x
1
u
(
x
∈
G
,
∣
G
∣
=
p
)
x' = x^{\frac{1}{u}}(x\in G,|G|=p)
x′=xu1(x∈G,∣G∣=p) 的操作,让我大为迷惑:这开
u
u
u 次根都不需要离散对数的?
于是我决定先探究一下素数阶乘法循环群的性质,来考察是否真能这么做。经过一番折腾,我发觉…似乎还真可以这样?遂记录探究过程如下。
首先我意识到我好像没有见过素数阶乘法循环群的实例,问了问 G P T GPT GPT 他给我整了个 Z p ∗ Z_p^* Zp∗ 出来。问题是这玩意儿阶数显然为 p − 1 p-1 p−1 不是个素数(顺便一提, Z p Z_p Zp 倒是个素数阶循环群,可惜是加法循环群)。跑去查了查,查到了 素数阶群一定是循环群 这么个结论,然而依旧没有给出实例。鉴定为这下只能玩抽象的了。
我们假装有这么个循环群 G G G,其阶数为素数 p p p. 我们能推出以下性质:
-
G
G
G 必是循环群,且除了单位元
e
e
e 以外的元素都是生成元。
由于一个群的子群的阶一定整除这个群的阶,因此 G G G 的子群的阶只能是 1 1 1 或 p p p,那么它的子群只会是平凡子群 { e } \{e\} {e} 和 G G G 了。 我们考虑 g ∈ G g\in G g∈G,那么 < g > <g> <g> 显然是 G G G 的子群。当 g = e g =e g=e 时,显然 < g > = { e } <g>=\{e\} <g>={e},而当 g ≠ e g\neq e g=e 时,注意到 g 0 = e ≠ g g^0=e\neq g g0=e=g, ∣ < g > ∣ |<g>| ∣<g>∣ 显然大于等于 2 2 2,于是只能有 < g > = G <g>=G <g>=G 了,而此时 G G G 已经是循环群了, g g g 也成了生成元。 -
(
x
1
u
)
u
=
x
(x^{ \frac{1}{u} })^u =x
(xu1)u=x,其中
1
u
=
u
−
1
m
o
d
p
,
u
≠
0
m
o
d
p
\frac{1}{u} = u^{-1} \mod p,u\neq 0 \mod p
u1=u−1modp,u=0modp.
首先 1 u \frac{1}{u} u1 显然是存在的。当 x = e x = e x=e 结论显然成立。而当 x ≠ e x\neq e x=e, x x x 必定是 G G G 的生成元, x p = e x^p=e xp=e(话说似乎不是生成元好像也有这个性质来着)。那么 ( x 1 u ) u = x u × 1 u = x k ∗ p + 1 = e k × x = x (x^{ \frac{1}{u} })^u =x^{u\times \frac{1}{u}}=x^{k*p+1}=e^k\times x=x (xu1)u=xu×u1=xk∗p+1=ek×x=x. 综上结论成立。