加密过程
加密过程可以通过如下公式表示
解密过程
解密过程可以通过如下公式表示
其中
它是如何工作的?
举一个简单的例子
- 首先选择两个素数,比如我们选11和23
- 计算他们的乘机,得到
n 。即n=11∗23=253 . - 现在计算私钥
d ,d 要与(p−1)(q−1) 互质。这样的数有很多个,这里我们选19,即d=19 - 公钥
e 可由公式19e(mod220)=1 计算出。计算得到e=139 - 这样,我们得到了公钥
(e,n)=(139,253) 和私钥d=19
现在尝试加密数据“Hi”
- 查“Hi”的ASCII值,得到明文
(72,105) - 用公钥对明文进行加密
得到密文
3. 使用私钥
4. 将明文转换为对应的ASCII字符,得到“Hi”
工作原理
欧拉函数
欧拉函数定义
欧拉函数
如小于
欧拉函数的值
-
φ(1)=1 - 若
n 是质数p 的k 次幂,则φ(n)=pk−pk−1=(p−1)pk−1 。
如φ(25)=φ(52)=52−51=20 - 若
m,n 互质,则φ(mn)=φ(m)∗φ(n) 。
如φ(72)=φ(8∗9)=φ(23∗32)=φ(23)∗φ(32)=(8−4)∗(9−3)=24
欧拉定理
若
其中
比如
而
欧拉定理可以用来简化幂运算,如计算
RSA模型
- 首先要选两个很大的素数
p,q ,并计算n=p∗q 作为公钥的一部分,但选择的p,q 需要保密。 - 此时欧拉函数
φ(n)=φ(pq)=(p−1)(q−1) - 像上面的例子一样,选择一个
d ,保证min(p,q)≤d≤φ(n) ,且d 与φ(n) 互质。 - 通过
edmodφ(n)=1 得到e 。此时已得到全部公钥e,n 和私钥d ,且ed=1+rφ(n) -
加密过程为
C=Memodn ,解密过程为M′=Cdmodn 。等式成立的推导过程为:M′=Cdmodn=(Memodn)dmodn =Medmodn=M1+rφ(n)modn=M∗(Mφ(n))rmodn
由欧拉定理,Mφ(n)≡1(modn) ,所以
M∗(Mφ(n))rmodn=M∗1rmodn=Mmodn 此时说明明文
M 经过编码为C 再经过解码为M′ 时,M′=Mmodn 。但我们在做编码解码时, 限制0≤M′<n,0≤M<n ,所以编码和解码后的结果是相同的,即M=M′ 。
证毕。