codec.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include <string>
  3. #include "base/buffer.h"
  4. namespace ylib
  5. {
  6. namespace codec
  7. {
  8. ylib::buffer sha1(const ylib::buffer& data);
  9. ylib::buffer sha256(const ylib::buffer& data);
  10. ylib::buffer hmac_sha256(const ylib::buffer& key, const ylib::buffer& data);
  11. std::string md5(const ylib::buffer& data);
  12. std::string to_utf8(const std::string& gbk);
  13. std::string to_gbk(const std::string& utf8);
  14. namespace gzip
  15. {
  16. ylib::buffer en(const ylib::buffer& data);
  17. ylib::buffer de(const ylib::buffer& data);
  18. }
  19. namespace base64 {
  20. std::string en(const ylib::buffer& data);
  21. ylib::buffer de(const std::string& data);
  22. }
  23. namespace url {
  24. std::string en(const std::string& data);
  25. ylib::buffer de(const std::string& data);
  26. }
  27. #if 1
  28. namespace des3 {
  29. ylib::buffer en(const ylib::buffer& data, const std::string& key);
  30. ylib::buffer de(const ylib::buffer& data, const std::string& key);
  31. }
  32. #endif
  33. namespace aes {
  34. enum class variant {
  35. AES128 = 16,
  36. AES192 = 24,
  37. AES256 = 32
  38. };
  39. enum class mode {
  40. CBC,
  41. ECB
  42. };
  43. ylib::buffer en(const ylib::buffer& data, const std::string& key, ylib::codec::aes::variant variant, ylib::codec::aes::mode mode);
  44. ylib::buffer de(const ylib::buffer& ciphertext, const std::string& key, variant var, mode mod);
  45. }
  46. }
  47. }