一文详解非对称加密算法之RSA算法

TL;DR: 上一篇文章我们介绍了对称加密算法,其最主要的特点就是加密者和解密者持有相同的密钥,所以称之为对称。照理推想,有对称就有非对称。这篇文章我们来介绍另外一个重要的加密算法:非对称加密算法 (Asymmetric Cryptography), 也称为公开密钥加密算法 (Public Key Cryptography).

公开密钥算法概要

首先,跟对称密钥算法一样,非对称密钥算法不是指一个算法,而是一种算法。这类算法与对称加密算法相比较,有如下的特点:

  • 密钥是一对

    在上文的对称加密算法我们看到,密钥是一串数字或者字符串,加密者和解密者使用相同的密钥进行加解密。公开密钥算法则不同,它的密钥是一对的,分成公钥 - public key 和私钥 - private key。一般私钥是由密钥对的生成者持有,比如服务器端,不能泄露。而公钥是任何人都可以持有,是公开发布的,不怕泄露。由此这个算法而得到 公开密钥算法的名号。

  • 功能不一样

    对称加密算法的主要功能是加密和解密,而公开密钥算法的功能除了加密和解密,还可用于密钥协商,数字签名,是数字证书, HTTPS等的最核心基础。

  • 运行速度慢

    相对于对称加密算法,公开密钥算法由于其基础运算是指数运算再求余,而为了安全,指数一般是一个比较大的数值,所以其运算非常缓慢,而且由于算法的局限,一次加密的明文块很小,所以如果要加密一个很大的明文,比如一个文件的话,那性能是惨不忍睹的。所以一般情况下,会根据使用场景,只用公开密钥算法来加密对密钥保存要求更高的数据,而不是全部都用公开密钥算法来加密。

RSA 算法

现在我们来介绍第一个公开密钥算法,也是比较常用而且重要的一个算法,叫RSA。 该算法是由Ron Rivest, Adi Shamir, Leenard Aldeman三个人创建的,以他们三个人的首字母来命名RSA。

RSA算法原理

RSA算法的设计用到的数学知识很多,RSA会用到质数,互质数,公约数定理,欧几里得算法,同余和模求解,唯一质数分解定理,欧拉函数,欧拉定理和费马定理等。受限于时间和数学能力,这里就不一一展开了,有兴趣的可以参考这篇文章 https://www.jianshu.com/p/6aa7b59be872

公私钥的生成
  • 生成两个不相等的大质数p和q,它们的积 n = p q n = pq n=pq ,这个n的二进制位数就是密钥的位数,通常是1024, 2048, 4096.

  • 计算p和q的乘积 n = p q n=pq n=pq , 以及欧拉公式 φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n)= (p-1)(q-1) φ(n)=(p1)(q1)

  • 选择一个整数e, 使得 1 < e < φ ( n ) 1 < e< \varphi(n) 1<e<φ(n), 且e和 φ ( n ) \varphi(n) φ(n) 是互质的, 即 g c d ( e , φ ( n ) ) = 1 gcd(e, \varphi(n))=1 gcd(e,φ(n))=1. 在大多数RSA算法实现里面,e固定位65537

  • 计算 e 对于 φ ( n ) \varphi(n) φ(

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值