OTSCrypt.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #include "stdafx.h"
  2. #include "OTSCrypt.h"
  3. #include "OTSHelper.h"
  4. #include <locale.h>
  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #endif
  8. namespace OTSMODEL
  9. {
  10. #define LICENSE_STRING_LENGTH_MAX 1024
  11. #define LICENSE_STRING_LENGTH_MIN 16
  12. #define LICENSE_KEYSTRING_LENGTH_MAX 1024
  13. #define LICENSE_KEYSTRING_LENGTH_MIN 16
  14. COTSCrypt::COTSCrypt(void)
  15. {
  16. }
  17. COTSCrypt::~COTSCrypt(void)
  18. {
  19. }
  20. void COTSCrypt::Encrypt(const LPCTSTR& a_sKey, CString& a_sLicense)
  21. {
  22. char* sKey = NULL;
  23. char* sLicense = NULL;
  24. #ifdef UNICODE
  25. sKey = new char[LICENSE_KEYSTRING_LENGTH_MAX];
  26. //wchar_t* wsKey = a_sKey.GetBuffer();
  27. COTSHelper::WCharToChar(a_sKey, sKey);
  28. //a_sKey.ReleaseBuffer();
  29. sLicense = new char[LICENSE_STRING_LENGTH_MAX];
  30. wchar_t* wsLicense = (wchar_t*)a_sLicense.GetBuffer();
  31. COTSHelper::WCharToChar(wsLicense, sLicense);
  32. a_sLicense.ReleaseBuffer();
  33. #else
  34. sKey = (char *)a_sKey;
  35. sLicense = a_sLicense.GetBuffer();
  36. #endif //UNICODE
  37. m_oCrypt.TransformString(sKey, sLicense);
  38. #ifdef UNICODE
  39. wchar_t* psz = new wchar_t[LICENSE_KEYSTRING_LENGTH_MAX];
  40. memset(psz, 0, sizeof(wchar_t) * LICENSE_KEYSTRING_LENGTH_MAX);
  41. COTSHelper::CharToWChar(sLicense, psz);
  42. CString cl(psz);
  43. a_sLicense = cl;
  44. delete[] psz;
  45. #else
  46. CString cl(sLicense);
  47. #endif
  48. //delete[] sKey;
  49. //delete[] sLicense;
  50. }
  51. void COTSCrypt::Decrypt(const LPCTSTR& a_sKey, CString& a_sLicense)
  52. {
  53. char* sKey = NULL;
  54. char* sLicense = NULL;
  55. #ifdef UNICODE
  56. sKey = new char[LICENSE_KEYSTRING_LENGTH_MAX];
  57. //wchar_t* wsKey = a_sKey.GetBuffer();
  58. COTSHelper::WCharToChar(a_sKey, sKey);
  59. //a_sKey.ReleaseBuffer();
  60. sLicense = new char[LICENSE_STRING_LENGTH_MAX];
  61. wchar_t* wsLicense = (wchar_t*)a_sLicense.GetBuffer();
  62. // begin tangchenglong modify 20140927
  63. // DWORD dwNum = WideCharToMultiByte(CP_ACP, NULL, wsLicense, -1, NULL, 0, NULL, FALSE);
  64. // WideCharToMultiByte(CP_ACP, NULL, wsLicense, -1, sLicense, dwNum, NULL, FALSE);
  65. COTSHelper::WCharToChar(wsLicense, sLicense);
  66. // end tangchenglong modify 20140927
  67. // COTSHelper::WCharToChar(wsLicense, sLicense);
  68. a_sLicense.ReleaseBuffer();
  69. #else
  70. sKey = (char *)a_sKey;
  71. sLicense = a_sLicense.GetBuffer();
  72. #endif
  73. m_oCrypt.TransformString(sKey, sLicense);
  74. // begin tangchenglong modify 20140927
  75. //#ifdef UNICODE
  76. // CString cl(sLicense);
  77. // a_sLicense = cl;
  78. // delete[] sKey;
  79. // delete[] sLicense;
  80. //#else
  81. // //a_sKey.ReleaseBuffer();
  82. // a_sLicense.ReleaseBuffer();
  83. //#endif
  84. #ifdef UNICODE
  85. wchar_t * psz = new wchar_t[LICENSE_KEYSTRING_LENGTH_MAX];
  86. memset(psz, 0, sizeof(wchar_t) * LICENSE_KEYSTRING_LENGTH_MAX);
  87. COTSHelper::CharToWChar(sLicense, psz);
  88. CString cl(psz);
  89. a_sLicense = cl;
  90. delete[] psz;
  91. delete[] sKey;
  92. delete[] sLicense;
  93. #else
  94. CString cl(sLicense);
  95. #endif
  96. // end tangchenglong modify 20140927
  97. }
  98. }