在C++中實現RSA加密需要使用第三方庫,比如OpenSSL或Crypto++. 這里我給出一個使用Crypto++庫實現RSA加密的示例代碼:
#include <iostream>
#include <string>
#include <cryptopp/rsa.h>
#include <cryptopp/osrng.h>
#include <cryptopp/base64.h>
using namespace CryptoPP;
std::string rsaEncrypt(const std::string& msg, const RSA::PublicKey& key) {
std::string encrypted;
RSAES_OAEP_SHA_Encryptor encryptor(key);
StringSource(msg, true, new PK_EncryptorFilter(rng, encryptor, new StringSink(encrypted)));
return encrypted;
}
int main() {
AutoSeededRandomPool rng;
// 生成RSA密鑰對
RSA::PrivateKey privateKey;
RSA::PublicKey publicKey;
privateKey.GenerateRandomWithKeySize(rng, 2048);
privateKey.MakePublicKey(publicKey);
// 待加密的明文
std::string msg = "Hello, world!";
// 使用公鑰加密明文
std::string encrypted = rsaEncrypt(msg, publicKey);
std::cout << "Encrypted message: " << encrypted << std::endl;
return 0;
}
在上面的代碼中,我們使用Crypto++庫提供的RSAES_OAEP_SHA_Encryptor類進行RSA加密,使用PK_EncryptorFilter類進行過濾加密數據。首先生成RSA密鑰對,然后使用公鑰加密明文。最后輸出加密后的數據。