码迷,mamicode.com
首页 > 其他好文 > 详细

socketserver密文测试

时间:2019-10-22 13:01:34      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:false   info   password   rev   upd   pen   load   退出   put   

#server层
import socketserver
import json
import hashlib

def zhuce():
    pass

class MySocket(socketserver.BaseRequestHandler):
    def handle(self):
        sor = bwusir#
        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()

 

socketserver密文测试

标签:false   info   password   rev   upd   pen   load   退出   put   

原文地址:https://www.cnblogs.com/god-for-speed/p/11719064.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!