zoukankan      html  css  js  c++  java
  • socketserver密文测试

    #server层
    import socketserver
    import json
    import hashlib
    
    def zhuce():
        pass
    
    class MySocket(socketserver.BaseRequestHandler):
        def handle(self):
            sor = b'wusir'#
            while 1:
                str_dic = self.request.recv(1024).decode('utf-8')
                # 接收到 一个字典,类似于{'status':False,'username':None,'password':None}
                if not str_dic:break # 当客户端登录失败退出程序的情况下,这里会接收到一个空消息。
                dic = json.loads(str_dic)
                if not dic['status']:
                    '''没有登录成功的情况下'''
                    with open('info','r',encoding='utf-8') as f:
                        # 文件内容的存储方式  用户名|密码
                        for info in f:
                            username,pawd_txt = info.strip().split('|')
                            if username == dic['username']:
                                '''用户存在,就对客户端发来的用户的密码再次加密,与文件中对比'''
                                md5_obj = hashlib.md5(sor)
                                md5_obj.update(dic['password'].encode('utf-8'))
                                pawd = md5_obj.hexdigest()
                                if pawd_txt == pawd:
                                    '''密码正确的情况下'''
                                    dic['status'] = True
                                else:
                                    dic['reason'] = '密码错误'
                                break
                        else:
                            '''用户不存在'''
                            dic['reason'] = '用户不存在'
                            zhuce()
                    #  dic = {status:False ,  username ,   password,   reason}
                    #  dic = {status:True ,  username ,   password}
                    str_dic = json.dumps(dic)
                    self.request.send(str_dic.encode('utf-8'))
                else:
                    '''已经是登录成功了'''
    
    server = socketserver.TCPServer(('127.0.0.1',8080),MySocket)
    server.serve_forever()
    
    
    
    
    #client层
    import socket
    import hashlib
    import json
    sk = socket.socket()
    sk.connect(('127.0.0.1',8080))
    
    dic = {'status':False,'username':None,'password':None}
    c = 3
    while c:
        username = input('请输入用户名')
        password = input('请输入密码')
    
        md5_obj = hashlib.md5(password.encode('utf-8'))
        md5_obj.update(username.encode('utf-8'))
        pawd_m = md5_obj.hexdigest()
    
        dic['username'] = username
        dic['password'] = pawd_m
        str_dic = json.dumps(dic)
        sk.send(str_dic.encode('utf-8'))
    
        # 服务器应该回复我一个这样的字典:
        res_dic = sk.recv(1024).decode('utf-8')# str_dic
        result = json.loads(res_dic)# dic = {status:False/True ,  username ,   password,   reason}
        if result['status']:
            print('登录成功')
            break
        else:
            print('失败,%s'%result['reason'])
            c -= 1
    
    sk.close()
  • 相关阅读:
    java程序高CPU,如何直接定位(linux系统下命令行操作)
    HashMap源码解读(jdk1.8)
    mysql索引原理
    redis常见问题
    Bitmap算法
    list遍历时删除的坑
    接口和抽象类有什么区别?各在什么场景下使用?
    记录BigInteger犯过的一个错误
    CentOS7切换源
    map遍历性能记录
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/11719064.html
Copyright © 2011-2022 走看看