/** 导出函数加密 * @Author : Double sword * @Params : strin , strout * @Return : * @Date : 2011-8-9 */ __declspec(dllexport) int Crypto(char* strin,char ** strout) { CString strSend(strin),str; BYTE key[16]={0x12,0x44,0x56,0x38,0x55,0x82,0x56,0x85,0x23,0x25,0x56,0x45,0x52,0x47,0x45,0x86}; AES aes1(AES::BIT128,key); int len=strSend.GetLength(); BYTE input[16]; BYTE output[16]; BYTE *pByte=new BYTE[len] ; memcpy(pByte,strSend.GetBuffer(0),len); strSend=""; int iMeg=len/16,i,j=0; while(iMeg) { i=0; for(j=16*(len/16-iMeg);j<16*(len/16-iMeg+1);j++) { input[i]=pByte[j]; i++; } aes1.Cipher(input,output); for(i=0;i<16;i++) { str.Format("x%x",output[i]); strSend+=str; } iMeg--; } if(len%16!=0) { for(i=0;i<16;i++) { if(i<len%16) { input[i]=pByte[j]; j++; } else input[i]=0x0; } aes1.Cipher(input,output); for(i=0;i<16;i++) { str.Format("x%x",output[i]); strSend+=str;//密文 } } *strout = new char[strSend.GetLength()+1]; (*strout)[strSend.GetLength()] = '\0'; memcpy(*strout,strSend.GetBuffer(0),strSend.GetLength()); return strSend.GetLength(); }
/// 接收文本消息 void CChatRoomServerDlg::ReceiveText( CHATROOMMESSAGEINFO CRMInfo, char *pData, DWORD dwTextLength ) { pData[ dwTextLength ] = 0; for( int nIndex = 1; nIndex < m_arrFriendsInChat.GetSize(); nIndex++ ) { USER userSrc = m_arrFriendsInChat.GetAt( nIndex ); if( 0 == strcmp( userSrc.strIP, CRMInfo.szSrcIP ) ) { CString strText; strText.Format( "%s(%s) %s\r\n %s\r\n\r\n", userSrc.strName, userSrc.strIP, CRMInfo.szTime, pData ); CString strReceiveText; m_editReceived.GetWindowText( strReceiveText ); m_editReceived.SetWindowText( strReceiveText + strText ); m_editReceived.LineScroll( m_editReceived.GetLineCount() ); FlashWindow( TRUE ); CString strSend( pData ); /// 向所有客户端发送消息 for( int nIndex1 = 1; nIndex1 < m_arrFriendsInChat.GetSize(); nIndex1++ ) { USER userSend = m_arrFriendsInChat.GetAt( nIndex1 ); if( 0 == strcmp( userSrc.strIP, userSend.strIP ) ) { continue; } SendTextToIP( userSend.strIP, CHATROOM_CLIENT_PORT, strSend, userSrc.strIP ); } break; } } }