简介
RSA 算法是最流行的公钥密码算法,使用长度可以变化的密钥。RSA 是第一个既能用于数据加密也能用于数字签名的算法。
原理
RSA 算法原理如下:
1.随机选择两个大质数 p 和 q,p 不等于 q,计算 N=pq;
2.选择一个大于 1 小于 N 的自然数 e,e 必须与 (p-1)(q-1) 互素。
3.用公式计算出 d:d×e = 1 (mod (p-1)(q-1)) 。
4.销毁 p 和 q。
最终得到的 N 和 e 就是“公钥”,d 就是“私钥”,发送方使用 N 去加密数据,接收方只有使用 d 才能解开数据内容。
总结
RSA 的安全性依赖于大数分解,小于 1024 位的 N 已经被证明是不安全的,而且由于 RSA 算法进行的都是大数计算,使得 RSA 最快的情况也比 DES 慢上倍,这是 RSA 最大的缺陷,因此通常只能用于加密少量数据或者加密密钥,但 RSA 仍然不失为一种高强度的算法。
案例分析
虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。为了解释这个过程,请看下面的例子:
(1) Alice 需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。
(2) Alice 的浏览器向银行的网站请求公钥。
(3) 银行将公钥发送给 Alice。
(4) Alice 的浏览器使用银行的公钥将自己的对称密钥加密。
(5) Alice 的浏览器将加密后的对称密钥发送给银行。
(6) 银行使用私钥解密得到 Alice 浏览器的对称密钥。
(7) Alice 与银行可以使用对称密钥来对沟通的内容进行加密与解密了。
对称 VS 非对称
- 对称加密(Symmetric Cryptography)
加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。 - 非对称加密(Asymmetric Cryptography)
使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。 - 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。