⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 使用方法.txt

📁 实现DES加密解密算法
💻 TXT
字号:
这是3DES的使用方法,AES的自己找
加解密方法
void CDealClientMessage::EncryptSignificanceData(int bufferSignificanceData_len)
{
	//取得有效数据部分的指针
  char *buffer=bufferSendMessage+sizeof(MSGHEADER);
  //PFILE_DATA packet_message = (PFILE_DATA)(bufferSendMessage+sizeof(MSGHEADER));
  //确定加密消息数据块个数
  m_tempData_block_num= bufferSignificanceData_len / DES_DATA_BLOCK_SIZE;
  if (bufferSignificanceData_len % DES_DATA_BLOCK_SIZE)
  {
	  m_tempData_block_num++;
  }
   //加密有效数据
  
   EncryptMessage(buffer,m_tempData_block_num,
	            m_tempSecureSerVerKey.SecureSerVerKey1,
				m_tempSecureSerVerKey.SecureSerVerKey2,
				m_tempSecureSerVerKey.SecureSerVerKey3);
   m_tempMessageLength=sizeof(MSGHEADER)+m_tempData_block_num * DES_DATA_BLOCK_SIZE;
}




void CDealClientMessage::EncryptMessage(char *buffer, int block_num, DES_cblock key1, DES_cblock key2, DES_cblock key3)
{
	DES_key_schedule ks1, ks2, ks3;

	   DES_set_key((DES_cblock *)key1,&ks1);
       DES_set_key((DES_cblock *)key2,&ks2);
       DES_set_key((DES_cblock *)key3,&ks3);

       for( int i = 0; i < block_num; i ++)
	   {
            DES_ecb3_encrypt((DES_cblock *)buffer,(DES_cblock *)buffer, &ks1, &ks2, &ks3, DES_ENCRYPT);

			buffer += DES_DATA_BLOCK_SIZE;
	   }

}

void CDealClientMessage::DecryptSignificanceData(char *buffer)
{
 
	bufferSignificanceData=buffer+sizeof(MSGHEADER)+sizeof(TICKET);
	GetMsgheaderStruct(buffer);/*获取消息头,以便取得操作码*/
	m_tempData_block_num=(m_pMSGHEADER->len-sizeof(MSGHEADER)-sizeof(TICKET))/DES_DATA_BLOCK_SIZE;
	DecryptMessage(bufferSignificanceData,m_tempData_block_num,
 					m_tempSecureSerVerKey.SecureSerVerKey1,
 					m_tempSecureSerVerKey.SecureSerVerKey2,
 				    m_tempSecureSerVerKey.SecureSerVerKey3);
}



void CDealClientMessage::DecryptMessage(char *buffer, int block_num, DES_cblock key1, DES_cblock key2, DES_cblock key3)
{
       DES_key_schedule ks1, ks2, ks3;

	   DES_set_key((DES_cblock *)key1,&ks1);
       DES_set_key((DES_cblock *)key2,&ks2);
       DES_set_key((DES_cblock *)key3,&ks3);

       for( int i = 0; i < block_num; i ++)
	   {
            DES_ecb3_encrypt((DES_cblock *)buffer,(DES_cblock *)buffer, &ks1, &ks2, &ks3, DES_DECRYPT);

			buffer += DES_DATA_BLOCK_SIZE;
	   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -