RSA加密算法
RSA是一种公钥密码算法,属于一种非对称加密算法。普遍认为是目前世界上最优的公钥方案之一。RSA的安全性依赖于大整数的分解,算法的难度与大整数分解难度是等价的。
RSA参数
参数 | 解释 | 公式 | 描述 |
P、Q | 质数 | P*Q=N | 分解模数N后得到的值 |
N | 公共模数 | N=P*Q | 在RAS中进行模运算 |
e | 公钥指数 | gcd(φ,e)=1 | 1<e<φ |
d | 私钥指数 | gcd(φ,d)=1 | 1<d<φ |
φ | 欧拉公式 | φ=(P-1)*(Q-1) | / |
c | 密文 | c=me mod N | / |
m | 明文 | m=cd mod N | / |
参数解释
加密算法:c ≡ m e mod N;密文是明文的e次方模N得到的结果。
公钥(e,N):在已知明文的情况下,只要e和N这两个数就能完成对数据的加密。
解密算法:m≡cd mod N;明文是密文的d次方模N得到的结果。
私钥(d,N):在已知密文的情况下,只要d和N这两个数就能完成对数据的解密。
在加密和解密的过程中需要三个参数e,d,N。对于密钥对(E,D,N)生成步骤如下:
①求N:需要准备两个很大的质数P Q N=P*Q。
②求φ:φ=(p-1)*(q-1)
③求e:gcd(e,φ)=1 && 1<e<φ【在1<e<φ内与φ互素的数不止一个,我们可以任取一个。因为作为公钥公开,计算出相应的私钥即可】
④求d:e*d modφ=1(∵gcd(e,φ)=1 ∴gcd(d,φ)=1)