序言
之前对RSA加密算法做过一些调研,并用MATLAB实现,这里做一个总结。
1. 对称加密和非对称加密
根据密钥的使用方法,可以将加密方法分为对称加密和非对称加密
对称加密:加密和解密使用同一种密钥的方法(使用用户名和密码)。密码称为对称密码。
非对称加密:加密和解密使用不同的密码。密码称为公钥密码。
RSA(三个创始人姓氏开头字母)是目前使用最广泛的非对称加密算法。
2. 公钥和私钥
公钥与私钥:两者的关系如下
两者彼此配对,分别唯一。
公钥与密文一起公开,私钥则由个人保管。
公钥加密的密文只能用与其唯一配对的私钥才能解开,反之亦然。
加解密时的密钥使用:
首先记住,每个通信方都有自己的一对唯一配对的公钥和私钥,比如甲有甲自己的公钥和私钥,乙有乙自己的公钥和私钥。除了自己,别人只能获得“公钥 + 加密后的密文”。
我们将通信过程分为两种应用场景:文件加解密和签名加解密,如下图所示
发送加解密(比如邮件通信):
乙使用甲的公钥对邮件进行加密,甲接收到之后使用自己的私钥进行解密。
甲使用乙的公钥对邮件进行加密,乙接收到之后使用自己的私钥进行解密。签名加解密(比如文件发送):
乙使用自己的私钥进行签名,甲接收到文件后使用乙提供的公钥进行验证。
甲使用自己的私钥进行签名,乙接受到文件后使用甲提供的公钥进行验证。整个通信过程,除了自己,对方并不知道自己的私钥。
3. RSA加密算法的基本原理
模数N的获取:1024bit大数。选取两个不同的大素数p,q
N=p×q欧拉函数值φ(n)的获取:
φ(n)=(p−1)×(q−1)选择小质数e作为公钥指数:
16bit小数
满足下式即可,一般取e = 65537
gcd(e , φ(n)) = 1 即 e与φ(n)互质
1<e<φ(n) 且 gcd(e , φ(n))=1