C++ RSA加解密算法的实现
作者:野牛程序员:2023-06-20 14:59:30 C++阅读 2836
以下是一个使用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加密解密算法