Problem:
In C/C++ you want to encode/decode something from/to Base64. libtomcrypt is WTFPL-licensed and therefore provides a good choice for both commercial and non-commercial projects.
Solution:
Use these snippets:
#include <tomcrypt.h> /** * Encodes a given string in Base64 * @param input The input string to Base64-encode * @param inputSize The size of the input to decode * @return A Base64-encoded version of the encoded string */ std::string encodeBase64(const char* input, const unsigned long inputSize) { unsigned long outlen = inputSize + (inputSize / 3.0) + 16; unsigned char* outbuf = new unsigned char[outlen]; //Reserve output memory base64_encode((unsigned char*) input, inputSize, outbuf, &outlen); std::string ret((char*) outbuf, outlen); delete[] outbuf; return ret; } /** * Encodes a given string in Base64 * @param input The input string to Base64-encode * @return A Base64-encoded version of the encoded string */ std::string encodeBase64(const std::string& input) { return encodeBase64(input.c_str(), input.size()); } /** * Decodes a Base64-encoded string. * @param input The input string to decode * @return A string (binary) that represents the Base64-decoded data of the input */ std::string decodeBase64(const std::string& input) { unsigned char* out = new unsigned char[input.size()]; unsigned long outlen = input.size(); base64_decode((unsigned char*) input.c_str(), input.size(), out, &outlen); std::string ret((char*) out, outlen); delete[] out; return ret; }