base64.cpp 890 B

1234567891011121314151617181920212223
  1. #include "../include/base64.h"
  2. #include <boost/algorithm/string.hpp>
  3. #include <boost/archive/iterators/base64_from_binary.hpp>
  4. #include <boost/archive/iterators/binary_from_base64.hpp>
  5. #include <boost/archive/iterators/transform_width.hpp>
  6. std::string base64::decode(const std::string &val) {
  7. using namespace boost::archive::iterators;
  8. using It =
  9. transform_width<binary_from_base64<std::string::const_iterator>, 8, 6>;
  10. return boost::algorithm::trim_right_copy_if(
  11. std::string(It(std::begin(val)), It(std::end(val))),
  12. [](char c) { return c == '\0'; });
  13. }
  14. std::string base64::encode(const std::string &val) {
  15. using namespace boost::archive::iterators;
  16. using It =
  17. base64_from_binary<transform_width<std::string::const_iterator, 6, 8>>;
  18. auto tmp = std::string(It(std::begin(val)), It(std::end(val)));
  19. return tmp.append((3 - val.size() % 3) % 3, '=');
  20. }