基础知识
-
互质关系
如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系。比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。
关于互质关系的结论:
1. 任意两个质数构成互质关系,比如13和61。
2. 一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系,比如3和10。
3. 如果两个数之中,较大的那个数是质数,则两者构成互质关系,比如97和57。
4. 1和任意一个自然数是都是互质关系,比如1和99。
5. p p p是大于1的整数,则 p p p和 p − 1 p-1 p−1构成互质关系,比如57和56。
6. p p p是大于1的奇数,则 p p p和 p − 2 p-2 p−2构成互质关系,比如17和15。 -
费马小定理
定义: a a a是整数, p p p是质数,则 a p − a \large{a^p-a} ap−a 是 p p p的倍数=> a p − a \large{a^p-a} ap−a 对 p p p 取余数为0
=> a p k 1 p \Large{a^p}\over {k_1 p} k1pap − \Large- − a k 2 p \Large{a\over k_2p} k2pa 余数相减为0
=> a p \large{a^p} ap和 a \large{a} a对 p p p 取模相等
=> a p \large{a^p} ap和 a \large{a} a同余即 a p ≡ a ( m o d p ) \large{{a^p}\equiv{a}\small(mod \ p)} ap≡a(mod p)变形 :
∵ a ( a p − 1 − 1 ) \because \large{a(a^{p-1}-1)} ∵a(ap−1−1) 是 p p p 的倍数
若 a a a 不是 p p p 的倍数
=> a p − 1 − 1 \large{a^{p-1}-1} ap−1−1 是 p p p 的倍数
=> a p − 1 ≡ 1 ( m o d p ) \large{{a^{p-1}}\equiv{1}(\small mod \ p)} ap−1≡1(mod p) -
欧拉函数
ϕ ( n ) \phi(n) ϕ(n),欧拉函数,该函数求的是任意给定正整数 n n n,请问在小于等于n的正整数之中,有多少个与 n n n 构成互质关系
欧拉函数是积性函数即 ϕ ( a ) = ϕ ( b ) ϕ ( c ) \phi(a)=\phi(b)\phi(c) ϕ(a)=ϕ(b)ϕ(c) 其中 a = b ∗ c a=b*c a=b∗c
eg: ϕ ( 15 ) = ϕ ( 3 ) ϕ ( 5 ) = ( 3 − 1 ) ∗ ( 5 − 1 ) = 8 \phi(15)=\phi(3)\phi(5)=(3-1)*(5-1)=8 ϕ(15)=ϕ(3)ϕ(5)=(3−1)∗(5−1)=8 -
费马-欧拉定理
定义:若 a a a 是整数, n n n 是整数, a a a 和 n n n 互质,记作 a ⊥ n a\bot n a⊥n
a ϕ ( n ) − 1 \large{a^{\phi(n)}-1} aϕ(n)−1 是 n n n的倍数 即 a ϕ ( n ) ≡ 1 ( m o d n ) \large{{a^{\phi(n)}}\equiv{1}(\small mod \ n)} aϕ(n)≡1(mod n)
证明:若 n n n是质数时候, a ϕ ( n ) − 1 \large{a^{\phi(n)}-1} aϕ(n)−1是 n n n的倍数
=> a n − 1 − 1 \large{a^{n-1}-1} an−1−1 是 n n n的倍数
=> a n − 1 ≡ 1 ( m o d n ) \large{{a^{n-1}}\equiv{1}(\small mod \ n)} an−1≡1(mod n)
=>得证费马小定理是欧拉-费马定理的限定情况,后者更加一般化
RSA算法
步骤:
1.取大质数
p
,
q
p,q
p,q
2.
N
=
p
∗
q
N=p*q
N=p∗q
ps:N的长度就是密钥长度,一般至少取1024位
3.设 r = ϕ ( N ) = ϕ ( p ) ϕ ( q ) = ( p − 1 ) ∗ ( q − 1 ) {r=\phi(N)=\phi(p)\phi(q)=(p-1)*(q-1)} r=ϕ(N)=ϕ(p)ϕ(q)=(p−1)∗(q−1)
4.选取
e
<
r
e<r
e<r且
e
⊥
r
e\bot r
e⊥r
=>获得公钥(
e
,
N
e,N
e,N)
ps:应用中e一般取65537
5.求一个
d
d
d值,满足
e
e
e关于r的模逆元即
e
d
−
1
ed-1
ed−1是
r
r
r的倍数
e
d
≡
1
(
m
o
d
r
)
{{ed}\equiv{1}(\small mod \ r)}
ed≡1(mod r)
=>获得私钥(
d
,
N
d,N
d,N)
6.加密过程
B
o
b
m
→
A
l
i
c
e
Bob \ \underrightarrow{m} Alice
Bob mAlice
Bob向Alice发送明文
m
,
m
<
N
m,m<N
m,m<N(如果太长分段发送)
m
e
−
c
m^e-c
me−c 是
N
N
N的倍数
c
≡
m
e
(
m
o
d
N
)
{{c}\equiv{m^e}(\small mod \ N)}
c≡me(mod N)
=>
c
c
c是加密后的密文
7.解密过程
c
d
−
?
c^d-?
cd−? 是
N
N
N的倍数,? 即使所求明文
m
m
m
c
d
≡
?
(
m
o
d
N
)
\large{{c^d}\equiv{?}(mod \ N)}
cd≡?(mod N)
证明:由加密推解密,已知加密的公式
∵
m
e
−
c
\because m^e-c
∵me−c 是N的倍数
=>
c
=
m
e
+
N
c=m^e+N
c=me+N的倍数
∴
c
d
=
m
e
d
+
N
\therefore c^d=m^{ed}+N
∴cd=med+N的倍数
=
m
1
+
r
的
倍
数
+
N
=m^{1+r的倍数}+N
=m1+r的倍数+N的倍数p;
模
逆
元
公
式
:
e
d
−
1
是
r
的
倍
数
←
\underleftarrow{\small 模逆元公式: ed-1是r的倍数}
模逆元公式:ed−1是r的倍数
=
m
∗
m
r
的
倍
数
+
N
=m*m^{r的倍数}+N
=m∗mr的倍数+N的倍数
=
m
∗
m
ϕ
(
N
)
倍
数
+
N
=m*m^{\phi(N)倍数}+N
=m∗mϕ(N)倍数+N的倍数
=
m
∗
(
1
+
N
的
倍
数
)
+
N
=m*\small{(1+N的倍数)}+N
=m∗(1+N的倍数)+N的倍数
费
马
欧
拉
定
理
:
a
ϕ
(
N
)
−
1
是
N
的
倍
数
←
\underleftarrow{\small 费马欧拉定理: {a^{\phi(N)}-1} 是 N的倍数}
费马欧拉定理:aϕ(N)−1是N的倍数
=
m
+
N
=m+N
=m+N的倍数
∴
c
d
−
m
=
N
\therefore c^d-m=N
∴cd−m=N的倍数
得证