Base64.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Company: Lynar Studios
  4. * E-Mail: webmaster@lynarstudios.com
  5. * Created: 2022-01-03
  6. * Changed: 2022-01-08
  7. *
  8. * */
  9. #include <ls_std/encoding/base64/Base64.hpp>
  10. #include <bitset>
  11. #include <sstream>
  12. std::string ls_std::Base64::encode(const std::string &_sequence)
  13. {
  14. std::string encodedString, subSequence{};
  15. for(size_t index = 0 ; index < _sequence.size() ; index += 3)
  16. {
  17. subSequence = ls_std::Base64::_getNextByteTriple(_sequence, index);
  18. encodedString += ls_std::Base64::_getEncodingFromSubSequence(subSequence);
  19. }
  20. return encodedString;
  21. }
  22. std::string ls_std::Base64::decode(const std::string &_sequence)
  23. {
  24. return "";
  25. }
  26. std::bitset<24> ls_std::Base64::_getBitSequenceFromSequence(const std::string &basicString)
  27. {
  28. uint32_t bits{};
  29. std::stringstream stringStream{basicString};
  30. stringStream >> bits;
  31. std::bitset<32> bitSequenceBuffer{bits};
  32. std::bitset<24> bitSequence{};
  33. return bitSequence;
  34. }
  35. std::string ls_std::Base64::_getEncodingFromSubSequence(const std::string& basicString)
  36. {
  37. std::string encodingString{};
  38. std::bitset<24> bitSequence = ls_std::Base64::_getBitSequenceFromSequence(basicString);
  39. return encodingString;
  40. }
  41. std::string ls_std::Base64::_getNextByteTriple(const std::string &_sequence, size_t index)
  42. {
  43. std::string subSequence{_sequence[index]};
  44. size_t size = _sequence.size();
  45. if((index + 1) < size)
  46. {
  47. subSequence += (_sequence[index+1]);
  48. }
  49. if((index + 2) < size)
  50. {
  51. subSequence += (_sequence[index+2]);
  52. }
  53. return subSequence;
  54. }