| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 
 
 
- #include <iostream>
 
 - #include <string.h>
 
 - #include <tchar.h>
 
 - #include <windows.h>
 
 - using namespace std;
 
  
- /* 简单的对称加密类 */
 
 - class symEncryption
 
 - {
 
 - private:
 
 -         CHAR        *m_pData;
 
 -         CHAR        *m_Key;
 
 -         CHAR        *m_reSult;
 
 - public:
 
 -         /* 设置加密的数据 */
 
 -         BOOL setEncryData(CHAR *pszData, DWORD dwSizes)
 
 -         {
 
 -                 if (NULL == pszData || NULL == dwSizes)
 
 -                 {
 
 -                         return(FALSE);
 
 -                 }
 
  
-                 if (NULL != m_pData)
 
 -                 {
 
 -                         delete[]m_pData;
 
 -                 }
 
  
 
-                 this->m_pData = new CHAR[dwSizes];
 
  
-                 if (NULL == m_pData)
 
 -                 {
 
 -                         return(FALSE);
 
 -                 }
 
  
 
-                 memcpy(m_pData, pszData, dwSizes);
 
  
-                 return(TRUE);
 
 -         }
 
  
 
-         /* 设置数据钥匙 */
 
 -         BOOL setKey(CHAR *pszKey, DWORD dwSizes)
 
 -         {
 
 -                 if (NULL == pszKey || NULL == dwSizes)
 
 -                 {
 
 -                         return(FALSE);
 
 -                 }
 
  
-                 if (NULL != m_Key)
 
 -                 {
 
 -                         delete[]m_Key;
 
 -                 }
 
  
-                 this->m_Key = new CHAR[dwSizes];
 
  
-                 if (NULL == m_Key)
 
 -                 {
 
 -                         return(FALSE);
 
 -                 }
 
  
-                 memcpy(m_Key, pszKey, dwSizes);
 
  
-                 return(TRUE);
 
 -         }
 
  
 
-         /* 加密数据 */
 
 -         BOOL encryptionData()
 
 -         {
 
 -                 if (NULL == m_pData || NULL == m_Key)
 
 -                 {
 
 -                         return(FALSE);
 
 -                 }
 
  
-                 if (NULL != m_reSult)
 
 -                 {
 
 -                         delete[]m_reSult;
 
 -                 }
 
  
-                 /* 生成和密文相同长度的密联流 */
 
 -                 DWORD        dwDatalen = strlen(m_pData);
 
 -                 CHAR        *pTemp = new CHAR[dwDatalen + 1]();
 
  
 
-                 /* 生成密联流 */
 
 -                 DWORD dwKeyLne = strlen(m_Key);
 
 -                 for (DWORD sum = 0; sum < dwDatalen; sum++)
 
 -                 {
 
 -                         pTemp[sum] = m_Key[sum % dwKeyLne + sum];
 
 -                 }
 
 -                 pTemp[dwDatalen] = 0;
 
  
-                 /* Xor加密 */
 
  
-                 if (NULL != m_reSult)
 
 -                 {
 
 -                         delete[]m_reSult;
 
 -                 }
 
 -                 m_reSult = new CHAR[dwDatalen + 1]();
 
  
-                 for (DWORD sum = 0; sum < dwDatalen; sum++)
 
 -                 {
 
 -                         m_reSult[sum] = pTemp[sum] ^ m_pData[sum];
 
 -                 }
 
 -                 m_reSult[dwDatalen] = 0;
 
  
-                 delete[]pTemp;
 
 -         }
 
  
 
-         /* 获取加密/解密的数据 */
 
 -         DWORD getResultSize()
 
 -         {
 
 -                 return(strlen(m_reSult) + 1);
 
 -         }
 
  
 
-         /* 获取加密后的数据 */
 
 -         BOOL getResultData(CHAR *pszData)
 
 -         {
 
 -                 if (NULL == pszData)
 
 -                 {
 
 -                         return(FALSE);
 
 -                 }
 
  
-                 memcpy(pszData, this->m_reSult, strlen(m_reSult) + 1);
 
 -         }
 
  
 
-         ~symEncryption()
 
 -         {
 
 -                 if (NULL != this->m_pData)
 
 -                 {
 
 -                         delete[]this->m_pData;
 
  
-                         this->m_pData = NULL;
 
 -                 }
 
  
-                 if (NULL != this->m_Key)
 
 -                 {
 
 -                         delete[]this->m_Key;
 
  
-                         this->m_Key = NULL;
 
 -                 }
 
  
-                 if (NULL != this->m_reSult)
 
 -                 {
 
 -                         delete[]this->m_reSult;
 
  
-                         this->m_reSult = NULL;
 
 -                 }
 
 -         }
 
 - };
 
  
- int main(void)
 
 - {
 
 -         /* 【字符串加密测试】 */
 
  
-         /* 加密数据 */
 
 -         char                * str = "hello";
 
 -         char                *key = "fishc";
 
 -         symEncryption        encryData;
 
  
-         /* 设置加密的数据 */
 
 -         encryData.setEncryData(str, strlen(str) + 1);
 
  
-         /* 设置加密密联 */
 
 -         encryData.setKey(key, strlen(key) + 1);
 
  
-         /* 设置加密数据 */
 
 -         encryData.encryptionData();
 
  
-         cout << "数据大小" << encryData.getResultSize() << endl;
 
  
-         cout << "加密前" << str << "  密钥"<<key<<endl;
 
  
-         char buffer[20] = { 0 };
 
 -         /* 得到加密后的数据 */
 
 -         encryData.getResultData(buffer);
 
  
-         cout << "加密后" << buffer << endl;
 
  
 
-         /* 解密数据 */
 
 -         symEncryption decryptData;
 
  
-         /* 设置解密数据密联 */
 
 -         decryptData.setKey(key, strlen(key) + 1);
 
  
-         /* 设置解密的数据 */
 
 -         decryptData.setEncryData(buffer, strlen(buffer) + 1);
 
  
-         /* 解密数据 */
 
 -         decryptData.encryptionData();
 
  
-         /* 得到解密的数据 */
 
 -         decryptData.getResultData(buffer);
 
  
-         cout << "解密后" << buffer << "  密钥" << key <<  endl;
 
  
 
-         system("Pause");
 
  
 
-         return(EXIT_SUCCESS);
 
 - }
 
  复制代码 |   
 
 
 
 |