浅谈RSA加密


  说到加密,目前比较常见的有对称加密和非对称加密,那什么是对称加密和非对称加密呢,如图


对称加密
假如 一个人A想把信息m发给B  他不能直接把m给B,不然会被窃听到,所以A经过一个算法,比如+e,得到C,

然后A把这个C发送给B,B收到C之后,通过 -e 的方式就得到了信息m

(例如: A想把数字 2 传给B,  A通过+1的方式把 3 传给了B,  B收到 3 之后,通过-1的方式就得到了 2 )


m 是明文,就是我们要传递的信息

e 是密钥,就是加密的算法,是需要保密的  

C 是密文,就是加密之后的信息
这个C可以是公开的,但由于不知道你的密钥,所以就没有办法知道要传递的m

简单来说就是通过e加密,也通过e去解密


非对称加密
还是这个例子,一个人A想把信息m发给B,B生成了两个有关系的e 和 d ,e称为公钥,d称为私钥,B可以通过公开的方式把e发给A
A通过e里面的某一个算法 例如+e 对m进行加密得到C,A也可以通过公开的方式把C发送给B,不对称的就不对称到这,B收到之后通过不是通过-e的方式,而是-d的方式,得到了信息m
也就是说 通过e加密,然后用d去解密

RSA

其中一个最经典的非对称就是RSA加密算法,那这个RSA是基于什么原理,公钥e和私钥d有一个怎么样的关系呢


首先 B先找出两个质数 p和q

计算   n = p * q

φ(n) = (p-1)  * (q-1)      这个函数又叫欧拉函数

公钥e    1 < e < φ(n)   在这个范围取出一个整数,并且 e 和 φ(n) 互质

私钥d    (e * d ) / φ(n)  = x  ······ 1       (x是几无所谓,余数必须是1,比如 φ(n)是20 e是3 那么d就是7)

 加密  m^e / n =x  ······  c     (这几个x都代表任意数的商,在这里面没有直接意义,可以忽略不看,这三个x也都不相等)

 解密  c^d  / n =x   ······ m   (可以从数学上证明,经过这一系列的计算,得到结果的余数一定是m)



安全性

首先我们先知道 A 和 B都知道哪些东西,B会把公钥e 和一个大数n 传给A,而B自己会留下一个私钥的d和一个相同的大数n,而A会把密文c传给B

由于n,e,c是知道的 是可以公开的,但是不知道私钥d,是很难破解出要传递的信息m的

那能不能通过公钥e去破解私钥d呢?

如果用e破解d,那么你首先知道φ(n)等于多少,想求出φ(n)的话,就必须知道 p 和 q
由n = p * q  我们也知道n,也知道p和q是质数,要求出p和q,这个过程是质因数分解
一个小数的质因数分解很简单(比如 21 = 3 * 7),但是一个大数的质因数分解却很难,更何况1024位的大数n呢(目前还没有人类能做出来)



由于这个原因,所以人们才认为RSA算法是比较保密的

那有没有什么方式可以快速的计算大数的质因数分解呢?

如果用我们普通的计算机去计算这个大数的质因数分解的话,大概需要10年的时间,才能算出来,当然如果用量子计算机的,可能一个星期就算出来了。

希望我的理解对您有所帮助!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值