关于RSA加密算法的介绍

陷门单向函数

关于RSA加密算法的介绍_rsa


RSA流程

a.示例1

关于RSA加密算法的介绍_rsa_02

关于RSA加密算法的介绍_rsa_03

关于RSA加密算法的介绍_数据_04


b.示例2

rsa加解密公式

设A为明文,B为加密后的密文

加密过程 B = A e m o d n B=A^e mod n B=Aemodn;

解密过程 A = B d m o d n A=B^d mod n A=Bdmodn;

从公式上可以看出,加解密时数据会 m o d n mod n modn,那么大于N的数据,都会发生回绕,失去原有属性。

举例

1)生成密钥对

a)选两个素数,为 P 和 Q P和Q P和Q

设 P = 13 , Q = 7 P = 13, Q = 7 P=13,Q=7

则 N = p × q = 91 N = p\times q = 91 N=p×q=91

b)选择E,要求 e e e 和$ ( p - 1 ) * ( q - 1 )$互质

( p − 1 ) ∗ ( q − 1 ) = 12 ∗ 6 = 72 (p-1)*(q-1) = 12 * 6 = 72 (p−1)∗(q−1)=12∗6=72,选择 E = 7 E = 7 E=7则可以。

现在$ N = 91, E = 7$

c)选择D,要求 ( d ∗ e ) m o d ( p − 1 ) ∗ ( q − 1 ) = 1 (d*e) mod (p-1)*(q-1) = 1 (d∗e)mod(p−1)∗(q−1)=1。

( p − 1 ) ∗ ( q − 1 ) (p-1)*(q-1) (p−1)∗(q−1)的值是72,所以

( d ∗ e ) m o d 72 = 1 ( d * e ) mod 72 = 1 (d∗e)mod72=1, ( d ∗ e ) ( d * e ) (d∗e)可以是 73 , 145 , 217 73, 145, 217 73,145,217…

选 d ∗ e = 217 d * e = 217 d∗e=217,则 d = 31 d = 31 d=31

2)n-d格式加解密过程

a)设A为明文,B为密文,

加密过程 B = A e m o d n B=A^e mod n B=Aemodn;

解密过程 A = B d m o d n A=B^d mod n A=Bdmodn;

b)加密

设$a = 2 $则 a e = 2 7 = 128 , m o d 91 = 37 a ^ e = 2 ^ 7 = 128, mod 91 = 37 ae=27=128,mod91=37,则 37为密文

b = 37

c)解密

b d = 3 7 3 1 = 4.1138973036067710421568685993113 e + 48 , m o d 91 = 2 b ^ d = 37 ^ 31 = 4.1138973036067710421568685993113e+48, mod 91 = 2 bd=3731=4.1138973036067710421568685993113e+48,mod91=2

解密结果等于明文,加解密成功

d)若明文 大于 n,假设 a等于93

a e = 9 3 7 = 60170087060757 , m o d 91 = 37 a ^ e = 93 ^ 7 = 60170087060757, mod 91 = 37 ae=937=60170087060757,mod91=37,则密文还是37

对37进行解密,得到的明文是2,与原始输入数据不一致

所以明文 不能 大于 N N N


https://www.zhihu.com/question/312961692/answer/627480245