模拟一个基于RSA的一次口令身份认证

根据《信息系统安全》课程作业,本文档介绍如何模拟实现一个基于RSA的一次口令身份认证(NOTP)。客户端和服务端分别进行注册和验证操作。在验证阶段,客户端生成RSA密钥对,公钥发送给服务端,服务端加密种子信息后返回给客户端。客户端使用种子和用户设置的密码进行多次迭代,与服务端对比,相同则认证成功。
摘要由CSDN通过智能技术生成

课程《信息系统安全》的大作业,在网上找到一篇硕士论文,基于此模拟实现一个一次口令身份认证,称为NOTP。
在这里插入图片描述
总体的设计思路如下:
客户端:
在这里插入图片描述
服务端:
在这里插入图片描述
贴上服务端的代码:
服务端有注册阶段和验证阶段

if __name__ == "__main__":
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    address = ('', 8888)
    tcp_socket.bind(address)
    print("开始连接...")
    tcp_socket.listen(5)
    while True:
        client_socket, clientaddr = tcp_socket.accept()
        data = ''
        recv_data = client_socket.recv(2048)
        data += recv_data.decode('utf8')
        print(data)
        if data == "enroll":
            print("开始注册")
            client_socket.send('ok'.encode('utf8'))
            con.enroll(client_socket, tcp_socket)
        elif data == "login":
            
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值