一段登陆验证服务器需要的加密解密过程,c语言的东西,帮忙翻译成delphi的,要注释
**这是客户端连接代理时候代理处理的代码//**
void CListenSocket::OnAccept(int nErrorCode)
{ char buf[0x1000];
char codebuf[0x1000];
int retval=0;
unsigned int bytesend=0;
//MMSG msg;
const char mirver[]="<mir152>";
const char fjdshfa[]="<C7ACA755D8C89168D6FCB949EA62CC1B32B03AA77443C73FFCA7533C5D1A6DD740E8>";
const char answer[]= "<C7ACA755D8C89168D6FCB949EA62CC1B32B03AA77443C73FFCA7533C5D1A6DD740E824>";
const char pass[]="<pass>";
CString str;
CString account;
CString password;
CSocket sktClient;
CSocket sktServer;
if(Accept(sktClient))
{ retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(strcmp(buf,mirver)!=0)
{ sktClient.Close();
return;
}
sktClient.Send(fjdshfa,strlen(fjdshfa));
retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(strcmp(buf,answer)!=0)
{ sktClient.Close();
return;
}
sktClient.Send(pass,strlen(pass));
retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(buf[retval-1]=='>')
buf[retval-1]=(char)0;
DecodeGate(&buf[1],codebuf);
sktServer.Create();
if(sktServer.Connect(m_ServerIp,7000)==0)
{ AfxGetMainWnd()->MessageBox("连接服务器失败",m_ServerIp); sktClient.Close();
return;
}
bytesend=0;
do
{
retval=sktServer.Send(codebuf+bytesend,strlen(codebuf)-bytesend);
if (retval==SOCKET_ERROR)
{
sktClient.Close();
sktServer.Close();
return;
}
bytesend+=retval;
}
while(bytesend < strlen(codebuf));
retval=sktServer.Receive(buf,0x1000);
buf[retval]=(char)0;
ZeroMemory(codebuf,0x1000);
EncodeGate(buf,codebuf);
sprintf(buf,"<%s>",codebuf);
sktClient.Send(buf,strlen(buf));
retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(buf[retval-1]=='>')
buf[retval-1]=(char)0;
DecodeGate(&buf[1],codebuf);
bytesend=0;
do {
retval=sktServer.Send(codebuf+bytesend,strlen(codebuf)-bytesend);
if(retval==SOCKET_ERROR)
{ sktClient.Close();
sktServer.Close();
return; }
bytesend+=retval;
}
while(bytesend < strlen(codebuf));
retval=sktServer.Receive(buf,0x1000);
buf[retval]=(char)0;
ZeroMemory(codebuf,0x1000);
EncodeGate(buf,codebuf);
sprintf(buf,"<%s>",codebuf);
sktClient.Send(buf,strlen(buf)); }
sktClient.Close();
sktServer.Close();
CSocket::OnAccept(nErrorCode);}//****************************************************
void CListenSocket::OnAccept(int nErrorCode)
{ char buf[0x1000];
char codebuf[0x1000];
int retval=0;
unsigned int bytesend=0;
//MMSG msg;
const char mirver[]="<mir152>";
const char fjdshfa[]="<C7ACA755D8C89168D6FCB949EA62CC1B32B03AA77443C73FFCA7533C5D1A6DD740E8>";
const char answer[]= "<C7ACA755D8C89168D6FCB949EA62CC1B32B03AA77443C73FFCA7533C5D1A6DD740E824>";
const char pass[]="<pass>";
CString str;
CString account;
CString password;
CSocket sktClient;
CSocket sktServer;
if(Accept(sktClient))
{ retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(strcmp(buf,mirver)!=0)
{ sktClient.Close();
return;
}
sktClient.Send(fjdshfa,strlen(fjdshfa));
retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(strcmp(buf,answer)!=0)
{ sktClient.Close();
return;
}
sktClient.Send(pass,strlen(pass));
retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(buf[retval-1]=='>')
buf[retval-1]=(char)0;
DecodeGate(&buf[1],codebuf);
sktServer.Create();
if(sktServer.Connect(m_ServerIp,7000)==0)
{ AfxGetMainWnd()->MessageBox("连接服务器失败",m_ServerIp); sktClient.Close();
return;
}
bytesend=0;
do
{
retval=sktServer.Send(codebuf+bytesend,strlen(codebuf)-bytesend);
if (retval==SOCKET_ERROR)
{
sktClient.Close();
sktServer.Close();
return;
}
bytesend+=retval;
}
while(bytesend < strlen(codebuf));
retval=sktServer.Receive(buf,0x1000);
buf[retval]=(char)0;
ZeroMemory(codebuf,0x1000);
EncodeGate(buf,codebuf);
sprintf(buf,"<%s>",codebuf);
sktClient.Send(buf,strlen(buf));
retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(buf[retval-1]=='>')
buf[retval-1]=(char)0;
DecodeGate(&buf[1],codebuf);
bytesend=0;
do {
retval=sktServer.Send(codebuf+bytesend,strlen(codebuf)-bytesend);
if(retval==SOCKET_ERROR)
{ sktClient.Close();
sktServer.Close();
return; }
bytesend+=retval;
}
while(bytesend < strlen(codebuf));
retval=sktServer.Receive(buf,0x1000);
buf[retval]=(char)0;
ZeroMemory(codebuf,0x1000);
EncodeGate(buf,codebuf);
sprintf(buf,"<%s>",codebuf);
sktClient.Send(buf,strlen(buf)); }
sktClient.Close();
sktServer.Close();
CSocket::OnAccept(nErrorCode);}//****************************************************
...全文
相关推荐
java源码包3
Applet钢琴模拟程序java源码2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。Calendar万年历1个目标文件EJB 模拟银行ATM流程及操作源代码6个目标文
java源码包4
Applet钢琴模拟程序java源码2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。Calendar万年历1个目标文件EJB 模拟银行ATM流程及操作源代码6个目标文
成百上千个Java 源码DEMO 4(1-4是独立压缩包)
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码
vc++ 应用源码包_1
独立打包,保证可解压,内含大量源码,网上搜集而来。Visual.C++编程技巧精选500例源代码内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、
vc++ 应用源码包_6
独立打包,保证可解压,内含大量源码,网上搜集而来。一共10几包,每个包几十兆。Visual.C++编程技巧精选500例源代码内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标


语言基础/算法/系统设计
