使用 openssl 生成公私钥 c++ 实现
时间: 2023-12-14 22:02:23 浏览: 178
要在C++中使用OpenSSL生成公私钥对,您需要使用OpenSSL的C API。以下是一个简单的示例代码,演示如何使用OpenSSL在C++中生成RSA密钥对:
```cpp
#include <iostream>
#include <openssl/rsa.h>
#include <openssl/pem.h>
int main() {
// 初始化OpenSSL库
OpenSSL_add_all_algorithms();
ERR_load_crypto_strings();
// 生成RSA密钥对
RSA* rsa_keypair = RSA_generate_key(2048, RSA_F4, nullptr, nullptr);
if (rsa_keypair == nullptr) {
std::cerr << "Failed to generate RSA key pair." << std::endl;
return 1;
}
// 将私钥保存到文件
FILE* private_key_file = fopen("private_key.pem", "wb");
PEM_write_RSAPrivateKey(private_key_file, rsa_keypair, nullptr, nullptr, 0, nullptr, nullptr);
fclose(private_key_file);
// 将公钥保存到文件
FILE* public_key_file = fopen("public_key.pem", "wb");
PEM_write_RSAPublicKey(public_key_file, rsa_keypair);
fclose(public_key_file);
// 释放RSA密钥对内存
RSA_free(rsa_keypair);
// 清理OpenSSL资源
EVP_cleanup();
CRYPTO_cleanup_all_ex_data();
std::cout << "RSA key pair generated successfully." << std::endl;
return 0;
}
```
上述代码中,我们首先初始化OpenSSL库,然后使用`RSA_generate_key`函数生成一个2048位的RSA密钥对。接下来,我们将私钥和公钥分别保存到`private_key.pem`和`public_key.pem`文件中。最后,我们释放RSA密钥对的内存,并清理OpenSSL资源。
请确保在编译时链接OpenSSL库,例如使用以下命令进行编译:
```
g++ -o generate_keys generate_keys.cpp -lssl -lcrypto
```
运行生成的可执行文件,将会在当前目录下生成私钥文件`private_key.pem`和公钥文件`public_key.pem`。
请注意,此示例仅用于演示目的,实际使用时可能需要进行错误处理和更多的安全考虑。
阅读全文