整理一下常用的密码学数论知识,不定期更新完善校正……
同余性质
性质一:如果
a
≡
b
(
m
o
d
m
)
a\equiv b(\,mod\,m)
a≡b(modm),
c
≡
d
(
m
o
d
m
)
c\equiv d(\,mod\,m)
c≡d(modm),则
a
+
c
≡
b
+
d
(
m
o
d
m
)
a+c\equiv b+d(\,mod\,m)
a+c≡b+d(modm)
于是,对k个
a
≡
b
(
m
o
d
m
)
a\equiv b(\,mod\,m)
a≡b(modm),有
k
a
≡
k
b
(
m
o
d
m
)
ka\equiv kb(\,mod\,m)
ka≡kb(modm)
性质二:如果
a
≡
b
(
m
o
d
m
)
a\equiv b(\,mod\,m)
a≡b(modm),
c
≡
d
(
m
o
d
m
)
c\equiv d(\,mod\,m)
c≡d(modm),则
a
c
≡
b
d
(
m
o
d
m
)
ac\equiv bd(\,mod\,m)
ac≡bd(modm)
于是,对k个
a
≡
b
(
m
o
d
m
)
a\equiv b(\,mod\,m)
a≡b(modm),有
a
k
≡
b
k
(
m
o
d
m
)
a^k\equiv b^k(\,mod\,m)
ak≡bk(modm)
性质三:如果 a c ≡ b c ( m o d m ) ac\equiv bc(mod\,m\,) ac≡bc(modm),且c和m互素,则 a ≡ b ( m o d m ) a\equiv b(\,mod\,m) a≡b(modm)
素数
任意整数 a > 1 a >1 a>1都可以唯一地因子分解为 a = p 1 α 1 × p 2 α 2 × … × p t α t a = p_1^{\alpha _1}×p_2^{\alpha _2}×… × p_t^{\alpha _t} a=p1α1×p2α2×…×ptαt,其中 p 1 , p 2 , … , p t p_1,p_2 ,…,p_t p1,p2,…,pt均是素数, p 1 < p 2 < … < p t p_1<p_2 <…<p_t p1<p2<…<pt,且所有的 a i a_i ai都是正整数。
费马小定理
若p是素数,a是正整数且不能被p整除,则 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1 \,(\,mod\, p\,) ap−1≡1(modp)
若p是素数,a是任意正整数,则 a p ≡ a ( m o d p ) a^{p} \equiv a\,(\,mod\,p\,) ap≡a(modp)
欧拉定理
欧拉函数
欧拉函数 ϕ ( n ) \phi (n) ϕ(n)表示小于n且与n互素的正整数的个数,习惯上, ϕ ( 1 ) = 1 \phi (1)= 1 ϕ(1)=1
对素数p有 ϕ ( p ) = p − 1 \phi (p)= p - 1 ϕ(p)=p−1
假设有两个素数p和q, p ≠ q p\neq q p=q,那么对 n = p q n =pq n=pq, ϕ ( n ) = ϕ ( p q ) = ϕ ( p ) × ϕ ( q ) = ( p − 1 ) × ( q − 1 ) \phi (n) = \phi (pq)= \phi (p) × \phi (q)= (p - 1) ×(q - 1) ϕ(n)=ϕ(pq)=ϕ(p)×ϕ(q)=(p−1)×(q−1)
欧拉定理
对任意互素的a和n,有 a ϕ ( n ) ≡ 1 ( m o d n ) a^{\phi (n)} \equiv1\,(\,mod\,n\,) aϕ(n)≡1(modn)
对任意的a和n,有 a ϕ ( n ) + 1 ≡ a ( m o d n ) a^{\phi (n)+1} \equiv a\,(\,mod\,n\,) aϕ(n)+1≡a(modn)
素性检验
Fermat素性检验
费马素性检验就是把费马小定理反过来用:
由费马小定理,对任意素数
p
p
p和与其互质的整数
a
a
a,
a
p
−
1
≡
1
(
m
o
d
p
)
a^{p-1}\equiv1 \,(\,mod\, p\,)
ap−1≡1(modp)
合理推测,任意选取一个小于
p
p
p的整数
a
a
a,若
a
p
−
1
≡
1
(
m
o
d
p
)
a^{p-1}\equiv1 \,(\,mod\, p\,)
ap−1≡1(modp),则试图认为
p
p
p是素数。
但实际上这个推测并不靠谱。
费马伪素数:对 p ′ p' p′和一个与其互素的整数 a a a,如果 p ′ p' p′整除 a p ′ − 1 − 1 a^{p'-1}-1 ap′−1−1,且 p ′ p' p′是一个非偶数的合数,则称 p ′ p' p′是关于整数 a a a的费马伪素数。最小的费马伪素数是341,341是关于整数2的费马伪素数(341本身是一个合数:341=11×31)。
卡迈克尔数:如果 p ′ p' p′关于任何与其互素的整数都是费马伪素数,则称 p ′ p' p′是绝对伪素数(或卡迈克尔数),最小的绝对伪素数是561。
即便如此,大部分情况下适当多选择几个a,可以在一定概率下认为 p ′ p' p′是一个素数。
Miller Rabin素性检验
二次探测定理:对于素数 p p p,若 x 2 ≡ 1 ( m o d p ) x^2\equiv1 \,(\,mod\, p\,) x2≡1(modp),则小于 p p p的解只有 1 1 1和 p − 1 p-1 p−1
证明:
由 x 2 ≡ 1 ( m o d p ) x^2\equiv1 \,(\,mod\, p\,) x2≡1(modp)
则 x 2 − 1 ≡ 0 ( m o d p ) ⇒ ( x + 1 ) ( x − 1 ) ≡ 0 ( m o d p ) x^2-1\equiv0\,(\,mod\,p\,)\Rightarrow (x+1)(x-1)\equiv0\,(\,mod\,p\,) x2−1≡0(modp)⇒(x+1)(x−1)≡0(modp)
即 p ∣ ( x + 1 ) ( x − 1 ) p|(x+1)(x-1) p∣(x+1)(x−1),又因为 p p p为素数,则得 ( x + 1 ) ( x − 1 ) = 0 (x+1)(x-1)=0 (x+1)(x−1)=0或 ( x + 1 ) ( x − 1 ) = k p (x+1)(x-1)=kp (x+1)(x−1)=kp
前式解得 x = 1 x=1 x=1,后式解得 x = p − 1 x=p-1 x=p−1
Miller Rabin素性检验原理分析
由费马小定理,对任意素数
p
p
p和与其互质的整数
a
a
a,有
a
p
−
1
≡
1
(
m
o
d
p
)
a^{p-1}\equiv1 \,(\,mod\, p\,)
ap−1≡1(modp),由于素数
p
p
p首先应该是个奇数(如果
p
p
p是个偶数就不用素性检验了,肉眼检验也是该是个合数),那么
p
−
1
p-1
p−1就应该是个偶数。
那么就可以类比二次探测定理 x 2 ≡ 1 ( m o d p ) x^2\equiv1 \,(\,mod\, p\,) x2≡1(modp),改写 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1 \,(\,mod\, p\,) ap−1≡1(modp)为 ( a p − 1 2 ) 2 ≡ 1 ( m o d p ) (a^{\frac{p-1}{2}})^2\equiv1\,(\,mod\, p\,) (a2p−1)2≡1(modp),即令 x = a p − 1 2 x=a^{\frac{p-1}{2}} x=a2p−1,就可以用二次检测定理来判断p是否为素数。
前面在二次探测定理中说“小于 p p p的解只有 1 1 1和 p − 1 p-1 p−1”,考虑 x = a p − 1 2 x=a^{\frac{p-1}{2}} x=a2p−1可能大于 p p p,那么需要先将 a p − 1 2 a^{\frac{p-1}{2}} a2p−1进行 m o d p \,mod\, p modp运算,得到的结果判断是否为 1 1 1或者 p − 1 p-1 p−1,如果不是,那么 p p p就不是素数。
如果 a p − 1 2 ≡ 1 ( m o d p ) a^{\frac{p-1}{2}}\equiv1 \,(\,mod\, p\,) a2p−1≡1(modp),且 a p − 1 2 a^{\frac{p-1}{2}} a2p−1不为奇数,那就可以再进行一轮检验,即令 x = a p − 1 4 x=a^{\frac{p-1}{4}} x=a4p−1,继续判断 a p − 1 4 a^{\frac{p-1}{4}} a4p−1的 m o d p \,mod\, p modp运算结果……直到 a p − 1 n a^{\frac{p-1}{n}} anp−1变成奇数。
也就是说,我们可以将 p − 1 = 2 t u p-1=2^tu p−1=2tu(u为奇数),对 a u , a 2 u , a 2 2 u . . . a 2 t u a^u,a^{2u},a^{2^2u}...a^{2^tu} au,a2u,a22u...a2tu这一系列数进行 m o d p \,mod\, p modp运算,得到的结果要么全是1,要么在经过很多不为1的数之后出现的 p − 1 p-1 p−1后全是1,否则就不是素数。 p − 1 p-1 p−1也不能出现在最后一个数,否则就意味着 a p − 1 ≡ p − 1 ( m o d p ) a^{p-1}\equiv p-1 \,(\,mod\, p\,) ap−1≡p−1(modp),不满足费马小定理。
Miller Rabin素性检验过程
先筛掉3以下的数与偶数(肉眼素性检验法)。
对待检验数 p ′ p' p′,将 p ′ − 1 p'-1 p′−1化为 2 t u 2^tu 2tu。
选取多个底数,分别对 a u , a 2 u , a 2 2 u . . . a^u,a^{2u},a^{2^2u}... au,a2u,a22u...进行检验,判断其解是否全为1,或在经过很多不为1的数之后出现的 p − 1 p-1 p−1后全是1 。
如果都满足,认为这个数是素数。
Miller Rabin素性检验和费马素性检验一样,并不能100%保证通过检测的一定是素数。大部分情况下适当多选择几个a,可以在一定概率下认为 p ′ p' p′是一个素数。
中国剩余定理
设
m
1
,
.
.
.
,
m
k
m_1,...,m_k
m1,...,mk是
k
k
k个两两互素的正整数,则对任意的整数
b
1
,
.
.
.
,
b
k
b_1,...,b_k
b1,...,bk,同余式组
{
x
≡
b
1
(
m
o
d
m
1
)
.
.
.
x
≡
b
k
(
m
o
d
m
k
)
\begin{cases} x\equiv b_1\,(\,mod\,m_1\,) \\ ...\\ x\equiv b_k\,(\,mod\,m_k\,)\\ \end{cases}
⎩⎪⎨⎪⎧x≡b1(modm1)...x≡bk(modmk)
x
x
x一定有解,且解唯一
令 m = m 1 . . . m k m = m i ⋅ M i i = 1 , . . . , k M i ′ ⋅ M i ≡ 1 ( m o d m i ) i = 1 , . . . , k m=m_1...m_k\\m=m_i·M_i\,\,\,\,\,\,\,i=1,...,k\\M'_i·M_i\equiv1(\,mod\,m_i\,)\,\,\,\,\,\,\,i=1,...,k m=m1...mkm=mi⋅Mii=1,...,kMi′⋅Mi≡1(modmi)i=1,...,k则解为 x ≡ b 1 ⋅ M 1 ′ ⋅ M 1 + b 2 ⋅ M 2 ′ ⋅ M 2 + . . . + b k ⋅ M k ′ ⋅ M k ( m o d m ) x\equiv b_1·M'_1·M_1+b_2·M'_2·M_2+...+b_k·M'_k·M_k(\,mod\,m\,) x≡b1⋅M1′⋅M1+b2⋅M2′⋅M2+...+bk⋅Mk′⋅Mk(modm)
离散对数
对方程: y ≡ g x m o d p y\equiv g^x\,mod\,p y≡gxmodp对给定的g、x和p,可直接计算出y,在最坏情况下需执行x次乘法;但是给定y、g和p,计算x一般非常困难(即求离散对数)。