RSA 加密算法

RSA 加密算法中的 3 个字母分别是由此算法的 3 位发明者:Ron Rivest,Adi Shamir,Leonard Adleman 的姓氏首字母组成的,RSA 加密算法可以说是现代密码学非对称加密的一个典型,所谓非对称加密其实就是公钥用于加密,私钥用于解密而已。

在介绍 RSA 之前,先要理解一个基本常识,就是几乎所有的现代密码学算法背后都是基于因数分解难题发明的,所谓因数分解难题就是指目前没有一个快速的计算机算法可以对极大整数做因数分解。

公钥与私钥

RSA 加密算法通过如下步骤生成公钥和私钥:

  1. 随机选择 2 个不相等的质数 $p$ 和 $q$,计算 $p$ 和 $q$ 的乘积 $n$
    取 $p=61$,$q=53$,则 $n=3233$
  2. 计算 $n$ 的欧拉函数 $\phi(n)$
    $\phi(3233)=60×52=3120$
  3. 随机选择一个整数 $e$,条件是 $1<e<\phi(n)$,且 $e$ 与 $\phi(n)$ 互质,并计算 $e$ 对于 $\phi(n)$ 的模反元素 $d$
    取 $e=17$,$d=2753$
  4. 将 $n$ 和 $e$ 封装成公钥,$n$ 和 $d$ 封装成私钥
    公钥为 $(n, e)$,私钥为 $(n, d)$

加密与解密