RSA —— 经典的非对称加密算法
一、加密算法基础知识
加密的密钥
密钥是一种参数,它是在明文转换为密文或密文转换为明文时算法的输入参数。可以理解成密码的钥匙。
对称与非对称
常见的数字加密方式分为两类:对称加密 和 非对称加密。
对称加密,又称为私钥加密,指的是加密和解密使用同一个密钥的方式。其特点是加密和解密过程简单、快速,并且只需要一个密钥。常见的对称加密算法包括DES、AES等。然而,由于使用的是同一个密钥,如果密钥被黑客拦截,信息就很容易被破译。
非对称加密,又称为公钥加密,是指使用一对非对称密钥进行加密的方式,其中一个密钥是公钥(可以公开的密钥),另一个密钥是私钥(只有密钥的持有者知道的密钥)。公钥可以用来加密信息,而私钥可以用来解密信息。因为使用的是两个不同的密钥,所以这种算法称为非对称加密算法。私钥不通过网络发送出去,所以非对称加密的安全性很高。最常用的非对称加密算法是RSA算法。
总结来说,对称加密和解密速度快,但安全性相对较低;而非对称加密虽然安全性高,但解密速度慢。在实际应用中,可以根据具体需求选择合适的加密方式。
二、RSA算法流程
(源于RSA —— 经典的非对称加密算法 - 知乎 (zhihu.com))
2、(3)欧拉函数(在RSA算法中相当于算出有几组素数即公私钥的组合)
定义:
欧拉函数,记作φ(n),在数论中表示小于n的正整数中与n互质的数的数目。
对于正整数N,少于或等于N的正整数中与N互质的正整数(包括1)的个数记作φ(n)。例如,φ(10)=10×(1-1/2)×(1-1/5)=4,其中p(1)=2,p(2)=5是10的所有质因数。
欧拉函数的性质包括:
- 若N是质数p的k次方,则φ(n)= p^k - p^(k-1)。
- 如果m和n互质,即GCD(m, n)=1,那么φ(m*n) = φ(m) * φ(n)。(换句话说,当我们把两个互质的数相乘时,与它们的乘积互质的数的数量是它们各自与自身互质的数的数量的乘积。
这个性质对于互质的数来说是成立的,因为互质的两个数没有其他公约数除了1以外,所以它们的欧拉函数值是独立的。)
公式:
欧拉函数φ(n)的公式取决于n的质因数分解。
如果n是质数p的k次方,那么φ(n)= p^k - p^(k-1)。
如果n没有形如p^k的质因数,那么φ(n)= n*(1-1/p1)(1-1/p2)...(1-1/pk),其中p1, p2, ..., pk是n的所有质因数。
2、(5)(逆元定理允许我们将公式(a/b)%c转换为乘法运算,从而避免由于b值过大而导致的精度问题。)
逆元是指一个可以取消另一给定元素运算的元素。在数学中,逆元素被广义化为加法中的加法逆元和乘法中的倒数。具体来说,如果存在一个数x满足ax%m=1,那么x就是a的逆元。逆元定理允许我们将公式(a/b)%c转换为乘法运算,从而避免由于b值过大而导致的精度问题。逆元有多个求法,包括费马小定理和欧