rsa加密算法c++
时间: 2023-06-29 11:09:20 浏览: 98
rsa_c.zip_RSA算法_rsa_rsa c++_rsa 加密_rsa加密
以下是使用 C++ 实现 RSA 加密算法的示例代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
// 计算两个数的最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 计算模数下的逆元
int mod_inverse(int a, int m) {
for (int i = 1; i < m; i++) {
if (((a % m) * (i % m)) % m == 1) {
return i;
}
}
return -1;
}
// 判断一个数是否为质数
bool is_prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
// 生成 RSA 密钥
void generate_rsa_key(int p, int q, int& n, int& e, int& d) {
if (!is_prime(p) || !is_prime(q)) {
cout << "p 和 q 必须是质数!" << endl;
return;
}
n = p * q;
int phi_n = (p - 1) * (q - 1);
e = 2;
while (gcd(e, phi_n) != 1) {
e++;
}
d = mod_inverse(e, phi_n);
}
// 对明文进行加密
int rsa_encrypt(int m, int e, int n) {
return (int)pow(m, e) % n;
}
// 对密文进行解密
int rsa_decrypt(int c, int d, int n) {
return (int)pow(c, d) % n;
}
int main() {
int p = 3; // 选择两个质数
int q = 5;
int n, e, d;
generate_rsa_key(p, q, n, e, d);
cout << "公钥:(" << n << ", " << e << ")" << endl;
cout << "私钥:(" << n << ", " << d << ")" << endl;
int m = 11; // 明文
int c = rsa_encrypt(m, e, n); // 加密
int m2 = rsa_decrypt(c, d, n); // 解密
cout << "明文:" << m << endl;
cout << "密文:" << c << endl;
cout << "解密后的明文:" << m2 << endl;
return 0;
}
```
注意,这只是一个简单的示例代码,实际使用时需要考虑更多的细节和安全性问题。
阅读全文