生成公私钥过程
- 随机选择两个大的质数
p
、q
- 由质数
p
和q
相乘得到n
, - 由欧拉函数求出
φ(n)
, - 随机选择与
r
互质的数e
,通常选择65537 - 最后求出
e
关于模数r
的模反元素d
,
此时得到的{n,e}
为公钥,{n,d}
为私钥。
数学知识
互质关系
-
定义
如果两个正整数,除了1以外,没有其他公因子,那么这两个数就是互质关系。
欧拉函数
-
定义
任意给定正整数
n
, 在小于等于n
的正整数之中,有多少个与n
构成互质关系(比如,在1到8之中,有多少个数与8构成互质关系)?计算这个值的方法就叫做欧拉函数,以φ(n)
表示。 -
公式
- 如果
n = 1
,φ(1) = 1
; - 如果
n
为质数,φ(n) = n - 1
; - 如果
n
是a
的k
次幂, - 如果
m
,n
互质,则φ(mn) = φ(m) * φ(n)
- 如果
欧拉定理
-
定义
若两个正整数
n
和m
互质,则:
即m
的φ(n)
次方 整除n
的余数是1
,其中φ(n)
表示在小于n
的正整数中与n
互质的个数。
费马小定理
-
定义
若
m
是不能被质数p
整除的数,则:
其实就是欧拉定理的特殊情况,由于p
是质数,所以φ(p) = p-1
。
模反元素
-
定义
如果两个正整数
e
和r
互质,那么一定可以找到整数d
,使得e * d - 1
被r
整除,那么d
就是e
对于模数r
的模反元素。
推导
-
由于 ,所以
-
由于 ,所以
-
由模反元素的定义知道
比较公式
与
当式1
中的与式2
中的相等时,式1
就变形成:
将上面的式3
进行拆分得到加解密的流程:
其中m
为要加密的数据,{n,e}
为公钥,{n,d}
为私钥,c
为加密后的数据。
网友评论