RSA加密算法
RSA非对称加密是根据数论理论,使用两个较大的素数,通过指数运行进行的一种信息处理方法。
- RSA算法加密过程:使用公钥对明文进行指数运算。
- RSA算法解密过程:使用私钥对密文进行处理。
算法过程:
- 选取两个超大素数 p,q。
- 令n = p*q;则n的欧拉函数为Φ(n)=(p - 1)(q - 1)。
- 取随机整数e(1<e<)Φ(n),且e和Φ(n)互质。
- 计算e对于Φ(n)的模反元素d,即( e*d ) mod Φ(n) = 1。
- p,q销毁。( n,e )为公钥,( n,d )为私钥。
加解密过程:
- c为密文,m为明文。
- 加密:c = (m^e) mod n;
- 解密:m = (c^e) mod n;
例题
解题思路
对于n不大,则可暴力法对其分解。对于组成n的p和q皆为素数,则当除数c(c>=2)== q或p时,n余数为0。
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n;
int p,q;
cin>>n;
int minPrimeNumber = 2; //定义最小的素数
while(minPrimeNumber<n){
if(n%minPrimeNumber==0){
n = n/minPrimeNumber;
p = minPrimeNumber;
}else{
minPrimeNumber++;
}
}
q = minPrimeNumber;
cout<<(p-1)*(q-1);
return 0;
}