RSA算法是最常用的非对称加密算法。其既可以用于加密,也可以用于数字签名。RSA的安全基于大数分解的难度。
公钥KU | n:两素数p和q的乘积(p,q必须保密) e:与(p-1)(q-1)的乘积互质 |
私钥KR | d:e-1(mod(p-1)(q-1)) n: |
加密 | c ≡ me mod n |
解密 | m ≡ cd mod n |
算法描述:
1. 选择一对不同的、足够大的素数p,q。计算n = pq。
2. 计算f(n) = (p-1)(q-1)。对p,q保密,不让任何人知道。
3. 找一个与f(n)互质的数e,且1<e<f(n)。
4. 计算d,使得de≡ 1 mod f(n)。
5. 加密时,先将明文变换成0至n-1的一个整数m。设密文为c,则加密过程为c ≡ me mod n。解密过程为m ≡ cd mod n。
其中≡符号表示数论中的同余符号。
RSA算法缺点:产生密钥麻烦,难以做到一次加密。为保证安全性,n至少600bits以上,运算代价高。