rsa加密算法简单介绍

Posted Nullan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsa加密算法简单介绍相关的知识,希望对你有一定的参考价值。


前言

聊天工具发送文字,表情包,一笔付款,怎么保证对方接受的信息与自己发送的信息保持一致,中间没有进行修改,答案就是对发送的信息进行信息加密与签名,并在接收端进行校验与解密。

密码学基础

对称加密


此时,m称为明文,就是我们希望表达的含义
C我们称为密文,我们可以公开传递的信息
而e就是密钥,不能告诉其他人,这个e的算法可以有很多种

但是算法再复杂也会被破解,因为可以穷举,尝试以前的算法,也可以通过频率,比如26个字母里,在一段话频率不一样,截取多种密文,可以试出来

如果发一段话换一个密钥呢?密钥的分发又成了一个问题。但是现在的量子保密通信就可以实现密钥分发的保密性

非对称加密

A发给B,但是B生成两个有相互关系的数字,e和d,e叫做公钥,公共的钥匙,d叫做私钥,私人的钥匙,B先把e传给A,可以以公开方式进行传递。A通过公钥的某一种算法,得到一个密文c,然后再把这个C给到B,然后用私钥解密得到m,得到公钥仍然无法得到明文,这就是非对称加密的方式

RSA加密算法

简单介绍

MIT三位数学教授于1978年发明的一种算法
1.先让B找出两个质数,一个叫P,一个叫Q(质数:只有1和它本身两个约数的数叫做质数)
2.做一个乘法 n = pq做个乘法
3.取一个函数为 φ(n) = (p-1)
(q-1) 欧拉函数
4.公钥e 1< e <φ(n) 的一个整数 ,且e和 φ(n)必须要互质(两个没有公共因子)
5.私钥d 满足e*d/ φ(n)的余数为1 ,这个d称为e关于φ(n)的模逆元记为 e d ≡ 1 ( m o d   φ ( n ) ) ed\\equiv 1(mod\\ \\varphi(n) ) ed1(mod φ(n))

例:
φ(n) = 20,e = 3 ,求私钥d
d = ( 20 + 1 ) / 3 d = (20+1)/3 d=(20+1)/3

6.A进行加密 m e / n m^e/n me/n 得到余数c

7.B解密的方式 c d / n c^d/n cd/n 得到余数m

安全性

B计算e和d,要传给A一个e,同时还要给A一个n
A要给B一个c

公开传播:n,e,c
解密需要:n,d,c

窃听者不知道d,不能进行解密
如果通过e求出d得先知道欧拉函数φ(n)
求欧拉函数φ(n)要求p和q, n = pq 进行质因数分解
分解小数字很简单,比如 21 = 3 ∗ 7 21=3*7 21=37,但是分解一个1024位的数字就很困难
因为一个RSA,比较常用的是1024位二进制数n,目前人类还未做到

数学上做的一个结论,所以人们认为RSA算法比较保密
普通计算机算十年的大数质因数分解,量子计算机一个星期能算出来
所以每隔一段时间银行系统需要进行一次更新

简单运用

例:
p = 3 p =3 p=3, q = 11 q = 11 q=11对密文11,5,25进行加密
解:
n = p ∗ q = 33 n = p*q = 33 n=pq=33 φ ( n ) = ( p − 1 ) ∗ ( q − 1 ) = 20 \\varphi(n) = (p-1)*(q-1) =20 φ(n)=(p1)(q1)=20
公钥 e 取1到20之间一个整数,且与20互质,取e = 3
私钥 d = ( φ ( n ) + 1 ) / 3 = 7 d = (\\varphi(n)+1)/3 = 7 d=(φ(n)+1)/3=7
加密 1 1 e   m o d   n = 1 1 3   m o d   33 = 11 11^e\\ mod\\ n = 11^3\\ mod\\ 33 =11 11e mod n=113 mod 33=11
1 1 e   m o d   n = 5 3   m o d   33 = 26 11^e\\ mod\\ n = 5^3\\ mod\\ 33 =26 11e mod n=53 mod 33=26
1 1 e   m o d   n = 2 5 3   m o d   33 = 16 11^e\\ mod\\ n = 25^3\\ mod\\ 33 =16 11e mod n=253 mod 33=16
解密
c d   m o d   n = 1 1 7   m o d   33 = 11 c^d\\ mod\\ n=11^7\\ mod\\ 33=11 cd mod n=117 mod 33=11
c d   m o d   n = 2 6 7   m o d   33 = 11 c^d\\ mod\\ n=26^7\\ mod\\ 33=11 cd mod n=267 mod 33=11
c d   m o d   n = 1 6 7   m o d   33 = 11 c^d\\ mod\\ n=16^7\\ mod\\ 33=11 cd mod n=167 mod 33=11

以上是关于rsa加密算法简单介绍的主要内容,如果未能解决你的问题,请参考以下文章

RSA算法记录----摘抄

关于RSA加密算法的介绍

关于RSA加密算法的介绍

数据加密算法详解

RSA加密算法介绍及Java工具类

RSA加密算法的简单案例