codec_util.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #ifndef CODEC_UTIL_H
  2. #define CODEC_UTIL_H
  3. #include <stdint.h>
  4. #include <string>
  5. namespace qcloud_cos {
  6. class CodecUtil {
  7. public:
  8. /**
  9. * @brief 将字符x转成十六进制 (x的值[0, 15])
  10. *
  11. * @param x
  12. *
  13. * @return 十六进制字符
  14. */
  15. static unsigned char ToHex(const unsigned char& x);
  16. /**
  17. * @brief 将二进制数据转成十六进制 (x的值[0, 15]),上层调用保证hex的大小足够
  18. *
  19. * @param bin
  20. *
  21. * @param binLen
  22. *
  23. * @param hex 存放结果的数据块
  24. *
  25. * @return 无
  26. */
  27. static void BinToHex(const unsigned char* bin, unsigned int binLen,
  28. char* hex);
  29. static std::string EncodeKey(const std::string& key);
  30. /**
  31. * @brief 对字符串进行URL编码
  32. *
  33. * @param str 带编码的字符串
  34. *
  35. * @return 经过URL编码的字符串
  36. */
  37. static std::string UrlEncode(const std::string& str);
  38. /**
  39. * @brief 对字符串进行base64编码
  40. *
  41. * @param plainText 待编码的字符串
  42. *
  43. * @return 编码后的字符串
  44. */
  45. static std::string Base64Encode(const std::string& plainText);
  46. /**
  47. * @brief 获取hmacSha1值
  48. *
  49. * @param plainText 明文
  50. * @param key 秘钥
  51. *
  52. * @return 获取的hmacsha1值
  53. */
  54. static std::string HmacSha1(const std::string& plainText,
  55. const std::string& key);
  56. /**
  57. * @brief 获取hmacSha1的16进制值
  58. *
  59. * @param plainText 明文
  60. * @param key 秘钥
  61. *
  62. * @return 获取的hmacsha1的16进制值
  63. */
  64. static std::string HmacSha1Hex(const std::string& plainText,
  65. const std::string& key);
  66. static std::string RawMd5(const std::string& plainText);
  67. static std::string RawMd51(const std::string& plainText);
  68. static std::string HexToBin(const std::string& strHex);
  69. };
  70. } // namespace qcloud_cos
  71. #endif