zoukankan      html  css  js  c++  java
  • day23作业

    # 1、把登录与注册的密码都换成密文形式
    '''
    user.txt:
    yu:202cb962ac59075b964b07152d234b70
    alex:250cf8b51c773f3f8dc8b4be867a9a02
    ego:68053af2923e00204c3ca7c6a3150cf7
    '''
    import hashlib
    user_dic ={}
    # 读取用户账户文件内容
    def select(username):
        with open('user.txt',mode='r',encoding='utf-8') as f:
            for line in f:
                user_data = line.strip().split(':')
                if username in line:
                    return user_data
    # 保存用户账户文件内容
    def save(username,password):
        with open('user.txt','a',encoding='utf-8') as f1:
            f1.write(f'{username}:{password}
    ')
    # 登录
    def login():
        while True:
            username = input('请输入账号:').strip()
            user_data = select(username)
            if not user_data:
                print("账号不存在,请重新输入")
                continue
            userpwd = input('请输入密码:').strip()
            if hashlib.md5(userpwd.encode('utf-8')).hexdigest() == user_data[1]:
                print('登陆成功')
                break
            else:
                print('密码错误,请重新输入')
    # 注册
    def regist():
        while True:
            username = input('请输入账号:').strip()
            user_data = selrect(username)
            if user_data:
                print("账号已存在,请重新注册")
                continue
            userpwd = input('请输入密码:').strip()
            userpwd1 = input('请确认密码:').strip()
    
            if userpwd == userpwd1:
                userpwd = hashlib.md5(userpwd1.encode('utf-8'))
                userpwd = userpwd.hexdigest()
                save(username,userpwd)
                print('注册成功')
                break
            else:
                print('两次密码有误,请重新输入')
    
    
    # 2、文件完整性校验(考虑大文件)
    import hashlib
    def foo():
        data = b''
        with open('a.txt',mode='rb') as f:
            f.seek(10, 0)
            res = f.read(3)
            data += res
            f.seek(50, 0)
            res = f.read(2)
            data += res
            f.seek(66, 0)
            res = f.read(33)
            data += res
            f.seek(122, 0)
            res = f.read(66)
            data += res
            f.seek(380, 0)
            res = f.read(111)
            data += res
            data = hashlib.md5(data)
            data = data.hexdigest()
            return data
    # 3、注册功能改用json实现
    # 注册
    # 保存用户账户文件内容
    '''
    user.json:
    {"yu": "202cb962ac59075b964b07152d234b70", "alex": "250cf8b51c773f3f8dc8b4be867a9a02",
     "egon": "68053af2923e00204c3ca7c6a3150cf7", "yuding": "202cb962ac59075b964b07152d234b70"}
    '''
    import json
    import hashlib
    def selecter(username):
        with open('user.json','r',encoding='utf-8') as f1:
            user_data = json.load(f1)
            if username not in user_data:
                return user_data
    def saver(user_data):
        with open('user.json','w',encoding='utf-8') as f2:
            json.dump(user_data,f2)
    # 登录
    def register():
        while True:
            username = input('请输入账号:').strip()
            user_data = selecter(username)
            if not user_data:
                print("账号已存在,请重新注册")
                continue
            userpwd = input('请输入密码:').strip()
            userpwd1 = input('请确认密码:').strip()
    
            if userpwd == userpwd1:
                userpwd = hashlib.md5(userpwd1.encode('utf-8'))
                userpwd = userpwd.hexdigest()
                user_data[username] = userpwd
                saver(user_data)
                print('注册成功')
                break
            else:
                print('两次密码有误,请重新输入')
    register()
    # 4、项目的配置文件采用configparser进行解析
    '''
    setting.ini:
    import os
    [根目录]
    BASE_PATH = os.path.dirname(os.path.dirname(__file__))
    [小说目录信息路径]
    STORY_PATH = os.path.join(DB_PATH, 'story_class.txt')
    [小说存放文件路径]
    FICTION_DIR = os.path.join(DB_PATH, 'fictions')
    [数据库文件路径]
    DB_PATH = os.path.join(BASE_PATH, 'db')
    [db.txt信息路径]
    DB_TXT_PATH = os.path.join(DB_PATH, 'db.txt')
    [日志文件的路径]
    LOG_PATH = os.path.join(BASE_PATH, 'log', 'log.txt')
    '''
    import configparser
    config = configparser.ConfigParser()
    config.read('setting.ini')
    # 获取sections
    print(config.sections())
    # 获取获取某一section下的所有options
    print(config.options('gen'))
    # 获取某一section下的items
    print(config.items('xiaoshuomulu'))
    # 获取所有section下的items
    for i in config.sections():
        print(config.items(i))
    # 获取具体的值
    res=config.get('gen','BASE_PATH')
    print(res,type(res)) # 获取字符串类型
    res=config.getint('gen','BASE_PATH')
    print(res,type(res)) # 获取int类型
    res=config.getfloat('gen','BASE_PATH')
    print(res,type(res)) # 获取flaot类型
    res=config.getboolean('gen','BASE_PATH')
    print(res,type(res)) # 获取布尔类型
    
  • 相关阅读:
    软件测试(理论基础)
    Android NDK常见配置问题的解决方案
    Eclemma各种安装方式以及安装失败解决
    检测Buffer Overflow的几种方法
    转: 跟我一起写 Makefile
    流敏感、路径敏感、上下文敏感
    Symbolic Exectuion with Mixed ConcreteSymbolic Solving
    基于ajc的代码编织
    第一次个人编程作业
    第一次博客作业
  • 原文地址:https://www.cnblogs.com/yding/p/12608102.html
Copyright © 2011-2022 走看看