基于Python实现的SKey身份认证协议

该项目实现了S/Key身份认证协议的Python代码,详细描述了其登录过程,包括用户输入用户名、服务器反馈、口令生成与验证、登录日志记录等环节。用户在ArchLinux环境下使用Python3.9和Pycharm IDE运行,模拟了注册新用户、登录、口令使用及更新的过程。登录日志详尽记录了每次登录的成败情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

资源下载地址:https://download.csdn.net/download/sheziqiong/85621996
资源下载地址:https://download.csdn.net/download/sheziqiong/85621996

SKey 身份认证协议的代码实现

本项目为课程实验内容,简单模拟了通过S/Key协议进行身份认证的过程。

运行环境

系统:Arch Linux

语言:Python 3.9

IDE:Pycharm

实现的功能

  1. S/Key协议身份认证
  2. 用户登录日志记录

本项目中S/Key协议认证过程

  1. 客户端连接服务器,提示用户输入用户名,将输入的用户名发送到服务器
  2. 服务器在用户信息字典中查询,根据用户名是否存在向客户端发送不同的反馈信息
  3. 客户端收到反馈信息,根据内容判断:
  4. 用户名不存在,接受服务器发送的 Seed,与用户名首尾相连后进行一次 MD5 哈希,然后前 8 位与后 8 位进行异或运算,得到 S。对 S 进行 MD5 运算 1 次,得到第 n 个密码;2 次得到第 n-1 个密码;…;n 次得到第 1 个密码。将第一个密码发送到服务器保存在用户信息字典中,依次使用第 2 到 n 个口令进行登录。www.biyezuopin.vip
  5. 用户名存在,但是生成的 n 个口令已使用完,则进行初始化,过程和用户名不存在的情况一样。
  6. 用户名存在,且 n 个口令未使用完,则直接提示用户输入口令。
  7. 用户输入口令,然后输入验证码(若输入错误,则验证码重新生成,提示用户再次输入,直到输入正确)发送到服务器,服务器接收到客户端发送的口令之后,对其进行一次 MD5 哈希运算,将所得结果与用户信息字典中的上一个口令进行比较,根据是否一致发送不同的反馈信息给客户端。
  8. 客户端收到反馈,若两者一致,则允许登录;否则不允许登录。

对于每一次登录,无论是否成功,都需要记录,记录信息包括时间、用户名、登录是否成功。

结果分析

服务器端正常情况下没有任何输出,只会记录日志文件。

客户端连接上服务器后输入用户名(初始,不存在该用户,进行注册并生成新的口令):

[]

手动将生成的口令复制到本地文件中,然后使用第 1 个口令(实际是生成的第二个口令,因为真正的第一个口令已经发送到了服务器端进行保存)登录,登录成功。www.biyezuopin.vip

[]

然后再次登录,此时仍使用第一个口令,查看结果,发现登录失败。

使用第二个口令尝试,登录成功。

当四个口令使用完后,再次尝试登录,重新生成口令。

注册一个新的用户,确保服务器在多个用户存在的前提下仍能正常工作。

[]
对于每一次的用户登录,服务器均会记录日志,对于以上登录过程,记录的日志内容如下图所示。

资源下载地址:https://download.csdn.net/download/sheziqiong/85621996
资源下载地址:https://download.csdn.net/download/sheziqiong/85621996

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值