前言:之前在做密码学题的时候了解了一下RSA,但总感觉那时总结的过少,而且也理解的不到位,这次就再来详细的了解一下,并通过做题来巩固一下。
一、对称加密与非对称加密
对称加密:
加密和解密用的是同一密钥,也是最简单、最快速的加密方式,通常使用的密匙相对较小,容易被破解,如果密钥过大,安全性确实可以得到保证,但同样加密和解密的效率将会很低。
因为双方都需要密钥进行加密解密,如果有一方的密钥泄露出去,整个安全性将不复存在,所以这也是对称加密的缺点。
非对称加密:
相较于对称加密,非对称加密使用两个密匙,即公开密钥和私钥密钥。
非对称加密很有趣,公钥是任何人都可以请求得到的,但私钥只有一个人持有,而且用公钥加密的密文只能通过私钥来解开,解密者无需像对称加密一样接收加密者的密钥,而是自己保存一个密钥,这样就不在网上传送密匙,不会被拦截,会更加安全,但是相对于对称加密,非对称加密加密和解密的效率会低一些
下面就来学习属于非对称加密中的RSA算法
RSA概述:
1977年,三位数学家Rivest、Shamir 和 Adleman 设计出RSA算法,可以实现非对称加密。而在此之前,使用的都是对称加密。
RSA算法涉及的数学知识
了解RSA之前,需要了解一些数学知识
一、互质关系
两个正整数,除1以外,没有其他公因子,那么这两个数就是互质关系。
例如:30与7就是互质关系,但是30不是质数,这就是说明不是质数也能构成互质关系
由互质关系能得出以下结论:
- 任意两个质数构成互质关系,比如7和61。
- 一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系,比如3和10。
- 如果两个数之中,较大的那个数是质数,则两者构成互质关系,比如97和57。
- 1和任意一个自然数是都是互质关系,比如1和99。
- p是大于1的整数,则p和p-1构成互质关系,比如57和56。
- p是大于1的奇数,则p和p-2构成互质关系,比如17和15。
二、欧拉函数
在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目,以φ(n)表示
其实欧拉函数就是用来计算这样一个问题
任意给定正整数n,在小于等于n的正整数之中,有多少个与n构成互质关系?
举个列子:
在1—10
中,与10互质的有1、3、7、9
,即φ(n)=4
通过欧拉函数又衍生出几种情况:
第一种情况: 如果n=1,则
φ(1) = 1
。因为1与任何数(包括自身)都构成互质关系。
第二种情况: 如果n是质数,则φ(n)=n-1
。因为质数与小于它的每一个数,都构成互质关系。比如7与1、2、3、4、5、6都构成互质关系。
其中对RSA最重要的一种情况就是:
如果n可以分解成两个互质的整数之积
n = p1 × p2