引用openssl头文件:
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <openssl/buffer.h>
unsigned char* ----> string:
string base64_encode(const unsigned char* buffer, unsigned int length)
{
BIO* b64 = NULL;
BIO* bmem = NULL;
BUF_MEM* bptr;
b64 = BIO_new(BIO_f_base64());
bmem = BIO_new(BIO_s_mem());
b64 = BIO_push(b64, bmem);
BIO_write(b64, buffer, length);
BIO_flush(b64);
BIO_get_mem_ptr(b64, &bptr);
char* buffer_out = (char*)malloc(bptr->length + 1);
memcpy(buffer_out, bptr->data, bptr->length);
buffer_out[bptr->length] = 0;
BIO_free_all(b64);
string base64_string(buffer_out);
free(buffer_out);
return base64_string;
}
vector<unsigned char> ----> string
string base64_encode(const vector<unsigned char>&data)
{
BIO* bio;
BIO* b64;
BUF_MEM* bufferPtr;
b64 = BIO_new(BIO_f_base64());
bio = BIO_new(BIO_s_mem());
bio = BIO_push(b64, bio);
BIO_set_flags(bio, BIO_FLAGS_BASE64_NO_NL);
BIO_write(bio, data.data(), data.size());
BIO_flush(bio);
BIO_get_mem_ptr(bio, &bufferPtr);
BIO_set_close(bio, BIO_NOCLOSE);
BIO_free_all(bio);
return string(bufferPtr->data, bufferPtr->length);
}