tc_tea.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef _TC_TEA_H_
  2. #define _TC_TEA_H_
  3. #include "util/tc_platform.h"
  4. #include <vector>
  5. #include <string>
  6. #include <string.h>
  7. #include <stdexcept>
  8. #include "util/tc_ex.h"
  9. using namespace std;
  10. namespace tars
  11. {
  12. /////////////////////////////////////////////////
  13. /**
  14. * @file tc_tea.h
  15. * @brief tea加解密类(修改至c版本) .
  16. *
  17. * @author jarodruan@tencent.com
  18. */
  19. /////////////////////////////////////////////////
  20. /**
  21. * @brief 加密异常类
  22. */
  23. struct TC_Tea_Exception : public TC_Exception
  24. {
  25. TC_Tea_Exception(const string &buffer) : TC_Exception(buffer){};
  26. ~TC_Tea_Exception() throw(){};
  27. };
  28. /**
  29. * @brief tea算法,通常用第二代算法
  30. */
  31. class TC_Tea
  32. {
  33. public:
  34. /**
  35. * @brief 加密.
  36. *
  37. * @param key 加密的key, 16个字节
  38. * @param sIn 输入buffer
  39. * @param iLength 输入buffer长度
  40. * @param buffer vector<char>, 加密后二进制串
  41. */
  42. static void encrypt(const char *key, const char *sIn, size_t iLength, vector<char> &buffer);
  43. /**
  44. * @brief 解密.
  45. *
  46. * @param key 解密的key, 16个字节
  47. * @param sIn 需要解密的buffer
  48. * @param iLength buffer长度
  49. * @param buffer vector<char>, 解密后二进制串
  50. * @return bool, 成功失败
  51. */
  52. static bool decrypt(const char *key, const char *sIn, size_t iLength, vector<char> &buffer);
  53. };
  54. }
  55. #endif