RSA 加密算法是一种非对称加密算法,于 1977 年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)提出,他们三人的姓氏首字母组成了 RSA 这个名字。RSA 加密算法是公钥密码系统的代表,可以用于加密和数字签名。其基本原理如下:
选取两个大素数 p 和 q,并计算它们的乘积 n=p*q。
计算 n 的欧拉函数?(n)=(p-1)*(q-1)。
选择一个整数 e,使其满足 1<e<?(n),且 e 与?(n) 互质。e 被称为公钥指数。
计算 e 关于?(n) 的模反元素 d。即满足 (d*e) % ?(n) = 1 的整数 d。d 被称为私钥指数。
公钥为 (e, n),私钥为 (d, n)。
加密过程如下:
设 m 为要加密的明文,其取值范围应在 [1, n-1] 之间。加密过程为:c = m^e % n。
解密过程如下:
已知密文 c,利用私钥 d 进行解密:m = c^d % n。
RSA 加密算法的安全性主要依赖于大素数分解的困难性。目前,对于较大的 n,分解 p 和 q 仍然是一个极具挑战性的问题。因此,RSA 加密算法被认为是一种非常安全的加密方法。