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