C++ RSA加解密算法的实现
作者:野牛程序员:2023-06-20 14:59:30 C++阅读 2873
以下是一个使用C++实现RSA加密和解密算法的简单示例:
#include <iostream>
#include <cmath>
using namespace std;
// 函数用于计算最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 函数用于计算模反元素
int modInverse(int a, int m) {
a = a % m;
for (int x = 1; x < m; x++) {
if ((a * x) % m == 1)
return x;
}
return 0;
}
// 函数用于计算幂模运算
int powerMod(int base, int exponent, int modulus) {
if (modulus == 1)
return 0;
int result = 1;
base = base % modulus;
while (exponent > 0) {
if (exponent % 2 == 1)
result = (result * base) % modulus;
exponent = exponent >> 1;
base = (base * base) % modulus;
}
return result;
}
// RSA加密函数
int encrypt(int message, int e, int n) {
return powerMod(message, e, n);
}
// RSA解密函数
int decrypt(int encryptedMessage, int d, int n) {
return powerMod(encryptedMessage, d, n);
}
int main() {
// 选择两个质数p和q
int p = 13;
int q = 17;
// 计算n
int n = p * q;
// 计算欧拉函数phi(n)
int phi = (p - 1) * (q - 1);
// 选择公钥e,要求e与phi(n)互质
int e = 7;
// 计算私钥d,使得(e * d) % phi(n) = 1
int d = modInverse(e, phi);
// 显示公钥和私钥
cout << "公钥: (" << e << ", " << n << ")" << endl;
cout << "私钥: (" << d << ", " << n << ")" << endl;
// 要加密的消息
int message = 88;
// 使用公钥加密消息
int encryptedMessage = encrypt(message, e, n);
cout << "加密后的消息: " << encryptedMessage << endl;
// 使用私钥解密消息
int decryptedMessage = decrypt(encryptedMessage, d, n);
cout << "解密后的消息: " << decryptedMessage << endl;
return 0;
}在这个示例中,我们选择了两个质数p和q,计算了n和欧拉函数phi(n)。然后,选择了公钥e并计算了对应的私钥d。接下来,选择要加密的消息并使用公钥进行加密,然后使用私钥进行解密。最后,显示了加密和解密后的消息。
请注意,这只是一个简单的示例,用于说明RSA加密和解密的基本原理。在实际应用中,可能需要考虑更多的安全性和性能方面的问题,并采用更复杂的实现方式。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:散列/哈希加密解密
- 下一篇:C++实现Rabin加密解密算法
