请教高手
我只会编写一些简单的socket程序来实现客户端与服务器之间的数据传输,现在我要编写一个客户端软件,可以跟服务器之间进行接受和发送TCP数据包. 客户端软件要具有登陆功能与修改密码功能.
1.登陆时客户端与服务器之间采取挑战-应答双向认证
ClientRequest={UserID,log_time,CNonce}
ServerChallenge={SessionID,SNonse,HMAC(CNonce,password)}
ClientReponse={SessionID,HMAC(SNonce,password)}
ServerResponse={OK}
USERID:用户ID 十进制数 4位区号+6位序列号
log_time: 登陆时间 4字节
CNonse: 客户端随机产生的20字节随机数
SNonse: 服务器随即产生的20字节随机数
SessionID: 服务器随机产生的16字节会话ID
Password: 客户端在服务器预留的16位ASCII字符
HMAC: 采用SHA-1算法
消息包的格式是: 消息代码(2字节)+消息长度(2字节)+消息内容
客户端软件的处理流程是::取自己的USERID(假设为1234abcdef),取计算机时间,取20字节随机数,发给服务器软件从服务器软件里接受ServerChallenge消息,保存SessionID,提示用户输入密码,根据password计算HMAC(CNonce,password)-->计算HMAC是否等于收到的HMAC,如果不等,则警告并结束登陆,如果相等,则计算HMAC(password,SNonce),构造ClientResponse发回服务端,如果没有收到OK,则结束登陆,如果收到OK,则提示登陆成功。
2.修改密码:用户登陆成功后可以执行修改密码功能.软件提示用户连续两次输入新password,比较一致后,将password送到服务器端,服务器记下新的密码作为用户的密码.
修改密码的消息ChangePassword定义如下:ChangePassword={SessionID,newPassword,HMAC(newPassword,Password)}
我是菜鸟,但是老师逼的很紧,希望高手能给出代码或者是部分代码或者给点提示也行.上面要求我说的不够详细,如果谁有什么地方看不懂的,请留言.若您有兴趣研究这个,加我QQ503042936 并留下QQ 请各位赐教啊,不甚感激。谢谢谢谢大家啊