使用python语言,基于服务端/客户端实现身份认证协议:
S/Key协议身份认证流程如下:
1.初始化
①用户在客户端输入用户名(应限制用户名的格式,如长度、包含的字符等),并将其发送到服务器
②服务器接收到客户端发送来的用户名,判断该用户名是否已经注册,如果未注册,则向用户发送一个种子:SEED(注意:客户端每次向用户发送的种子应当不同);然后再服务器端应当保存该用户名
③客户端接收到种子之后进行预处理:先将用户名和种子拼接成一个字符串,然后对该字符串进行MD5哈希,再将MD5加密后的结果前16字节和后16字节进行异或运算,结果记为S
2.生成口令序列
①对S进行MD5哈希,得到口令
②将第一个口令发送到服务器,作为初始登录的密码;接下来依次使用第2—N个口令进行登录
3.登录流程
①用户输入口令序列,将输入的内容发送到服务器,在服务器通过对保存下来的密码进行MD5哈希,与口令序列进行比对,验证口令是否正确
②在用户输入用户名时,如果用户名已注册,则直接使用注册时生成的口令序列依次登录
③如果口令验证成功,则服务器生成验证码,发送给用户,用户输入验证码进行登录
1