zoukankan      html  css  js  c++  java
  • python第22天作业

    1、把登录与注册的密码都换成密文形式

    import hashlib
    
    
    def password(inp_pwd):
        pwd = hashlib.md5()
        pwd.update('你还想破解密码'.encode('utf-8'))
        pwd.update(inp_pwd.encode('utf-8'))
        pwd.update('憨批'.encode('utf-8'))
        user_pwd = pwd.hexdigest()
        return user_pwd
    
    
    def register():
        inp_name = input("注册账号:>>").strip()
        inp_pwd = input("注册密码:>>").strip()
        inp_pwd2 = input("确认密码:>>").strip()
        if inp_pwd != inp_pwd2:
            print('两次密码不一致')
            return
        with open(r'db.txt', 'rb') as f:
            for line in f:
                x, *_ = line.decode('utf-8').strip().split(':')
                if x == inp_name:
                    print('账号已经注册,请重新输入')
            inp_pwd = password(inp_pwd)
            user_data = '{}:{}'.format(inp_name, inp_pwd)
        with open(r'db.txt', 'ab') as f:
            f.write(f'{user_data}
    '.encode('utf-8'))
            print('注册成功')
    
    
    def login():
        inp_name = input("请输入您的账号:>>").strip()
        inp_pwd = input("请输入您的密码:>>").strip()
        inp_pwd = password(inp_pwd)
        with open(r'db.txt', 'rb') as f:
            for line in f:
                user_data = line.decode('utf-8').strip().split(':')
                if inp_pwd in user_data and inp_name == user_data[0]:
                    print('登录成功')
                    break
            else:
                print('登录失败')
    
    
    register()
    login()
    

    2、文件完整性校验(考虑大文件)

    import hashlib
    
    
    def down_file(down_file_path):
        with open(r'{}'.format(down_file_path), 'rb') as f:
            m = hashlib.md5()
            for i in [0, 500, 1000]:
                f.seek(i, 0)
                res = f.read(200)
                m.update(res)
            msg = m.hexdigest()
            return msg
    
    
    def now_file(file_path):
        with open(r'{}'.format(file_path), 'rb') as f:
            m = hashlib.md5()
            for i in [0, 500, 1000]:
                f.seek(i, 0)
                res = f.read(200)
                m.update(res)
            msg = m.hexdigest()
            return msg
    
    if down_file(r'abc.txt') == now_file(r'abcd.txt'):
        print("文件完整")
    else:
        print("文件已损坏")
    

    3、注册功能改用json实现

    import json
    import os
    
    def register():
        data_dic = {}
        user_name = input('请输入您的注册账号:>>').strip()
        user_pwd1 = input('请输入您的注册密码:>>').strip()
        user_pwd2 = input('请再次输入您的注册密码:>>').strip()
        if user_pwd1 != user_pwd2:
            print('两次密码不一致')
            return None
        with open(r'db.json','rt',encoding='utf-8') as rf:
            if rf.read() != 0:
                rf.seek(0,0)
                res = json.load(rf)
        data_dic.update(res)
        for i in data_dic:
            if i == user_name:
                print('该账号存在,请重新注册')
                return None
        data_dic[user_name] = user_pwd1
        with open(r'db.json.swap','wt',encoding='utf-8') as wf:
            json.dump(data_dic,wf)
    
        os.remove('db.json')
        os.rename('db.json.swap', 'db.json')
        print('注册成功')
    register()
    

    4、项目的配置文件采用configparser进行解析

    看不懂……

  • 相关阅读:
    Linux平台下卸载MySQL的方法
    Linux自带mariadb卸载
    ubuntu下mysql的安装
    Java基础-方法区以及static的内存分配图
    Linux新建用户后的必要设置
    vim 个性化设置和操作
    centos6 下查看SELinux状态 关闭SELinux
    查看CentOS版本信息
    Linux下 tar 命令详解
    linux下 利用 rz 命令上传文件
  • 原文地址:https://www.cnblogs.com/Lance-WJ/p/12608247.html
Copyright © 2011-2022 走看看