使用 C++ openssl base64编码
时间: 2023-09-07 20:15:34 浏览: 135
c++ base64 编码
以下是使用 C++ 和 OpenSSL 库进行 base64 编码的示例代码:
```c++
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <iostream>
#include <string>
std::string base64_encode(const std::string& input)
{
// 创建 base64 编码器
BIO* b64 = BIO_new(BIO_f_base64());
BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
// 创建内存输入流
BIO* mem = BIO_new(BIO_s_mem());
BIO_push(b64, mem);
// 编码输入数据
BIO_write(b64, input.data(), static_cast<int>(input.length()));
BIO_flush(b64);
// 读取编码后的数据
char* encoded_data = nullptr;
const long len = BIO_get_mem_data(mem, &encoded_data);
std::string output(encoded_data, len);
// 释放资源
BIO_free_all(b64);
return output;
}
int main()
{
std::string input = "Hello, world!";
std::string encoded = base64_encode(input);
std::cout << encoded << std::endl;
return 0;
}
```
这段代码中,使用 OpenSSL 库中的 `BIO`(I/O 抽象)和 `EVP`(加密算法)模块进行 base64 编码。首先创建一个 base64 编码器,然后将其与一个内存输入流相连。将待编码的数据写入编码器中,然后通过内存输入流获取编码后的数据。最后释放资源并返回编码结果。
注意:在编译时需要链接 OpenSSL 库,例如在 Linux 环境下可以使用以下命令编译代码:
```bash
g++ main.cpp -o main -lssl -lcrypto
```
阅读全文