RSA非对称加密原理
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/zhangjingao/article/details/106761877
RSA介绍
RSA加密属于非对称加密,即加密和解密是使用密钥对中不同的秘钥进行的。自己保留的为私钥,公开的为公钥,两者都可以加密,但是只有使用另一者才能解密。
RSA加密的密钥对表示为(E,D,N)。(E是单词加密Encryption的首字母,D是解密Decryption的首字母,N是单词数字Number的首字母)。
RSA可以弥补对称加密中通信双方使用同一秘钥,在使用太多时,需要分配的秘钥数太多的问题,不过因为RSA需要的计算过程比较繁杂,加密速度就比对称加密慢。
密钥对(E,D,N)解析
E,D,N是加解密的关键,那么如何得到这些呢?
有几个关键的数值,这里说明一下:
关键数 | 含义 |
---|---|
(E,N) | 加密密钥对 |
(D,N) | 解密密钥对 |
E | 加密次方 |
D | 解密次方 |
N | 加解密模数 |
p,q,L | 都是求解中间数 |
第一二步为中间值,后面为核心数E,D,N。
1、首先随机选择两个质数p,q,比如p=17,q=19。
2、求L,L为两个质数-1的最小公倍数,即L=最小公倍((q-1),(p-1))= 144。
3、N为两个质数之积,N=q*p=323。
4、求E,E必须满足两个条件,非定值。
条件1:1 < E < L
条件1:最大公约数(E,L)= 1
这里可以随意取,本文取E=5。
5、求D,D也必须满足两个条件,非定值。
条件1:1 < D < L
条件2: D*E mod L = 1
D需要根据E去取,本文取D=29
很好,那么得到密钥对(5,29,323)。加密秘钥为(5,323),解密秘钥为(29,323)。
RSA加解密过程,假设明文为1234
加密
密文=明文^E mod N
即密文是由明文先取E次方,再对N取余得到的。
以上面密钥对(5,29,323)为例:
密文=245^5 mod 323 = 215
解密
明文=密文^D mod N
即明文是由密文先取D次方,再对N取余得到的。
以上面密钥对(5,29,323)为例:
明文=215^29 mod 323 = 245