day23 练习

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

import hashlib

def registered():
    name=input('请输入您想注册的用户名:').strip()
    pwd=input('请输入您想注册的登录密码:').strip()
    c_pwd=input('请再次输入您的登录密码:').strip()
    if pwd == c_pwd:
        #密码加密
        m=hashlib.md5()
        m.update(pwd.encode('utf-8'))
        mm=m.hexdigest()
        with open(r'D:\cool\db',mode='at',encoding='utf-8') as  x:
            x.write(f'{name}:{mm}\n')
        print('注册成功')
    else:
        print('密码不一致,请重新输入')
registered()


def login():
    inp_name=input('用户名:').strip()
    inp_pwd=input('密码:').strip()
    with open(r'D:\cool\db','rt',encoding='utf-8') as y:
        for z in y:
            k,v=z.strip().split(':')
            if inp_name in k:
                # 解密
                m2 = hashlib.md5()
                m2.update(inp_pwd.encode('utf-8'))
                m3=m2.hexdigest()
                if v == m3:
                    print('登录成功')
                    break
                else:
                    print('登录失败')
                    break
        else:
            print("用户名不存在")
login()


#     2、文件完整性校验(考虑大文件)
#取出文件的哈希值
import hashlib
def func(way):
    with open(way,mode='rb')as f:
        f.seek(2000,0)
        x=f.read(666)
        f.seek(-2000,2)
        y=f.read(666)
        z=hashlib.md5()
        z.update(x)
        z.update(y)
        n=z.hexdigest()
        return n
print(func(r'C:\Users\Administrator\Desktop\英雄时刻_20190808-23点07分02s.avi'))

#取到的哈希值  #bde8ccfb752800a9830222e695b4e427


#拿取到的哈希值和文件做对比
def func2(way,v):
    with open(way, mode='rb')as f:
        f.seek(2000,0)
        x=f.read(666)
        f.seek(-2000,2)
        y=f.read(666)
        z=hashlib.md5()
        z.update(x)
        z.update(y)
        n=z.hexdigest()
        if n==v:
            print('验证成功')
        else:
            print('验证失败')

# func2(r'C:\Users\Administrator\Desktop\英雄时刻_20190808-23点07分02s.avi','bde8ccfb752800a9830222e695b4e427')
#验证成功
# func2(r'C:\Users\Administrator\Desktop\英雄时刻_20190730-21点27分59s.avi','bde8ccfb752800a9830222e695b4e427')
#验证失败


#     3、注册功能改用json实现
import hashlib
import json
def registered():
    name = input('请输入您想注册的用户名:').strip()
    pwd = input('请输入您想注册的登录密码:').strip()
    c_pwd = input('请再次输入您的登录密码:').strip()
    if pwd == c_pwd:
        name=json.dumps(name)
        pwd=json.dumps(pwd)
        # 密码加密
        m = hashlib.md5()
        m.update(pwd.encode('utf-8'))
        mm = m.hexdigest()
        with open(r'D:\cool\db', mode='at', encoding='utf-8') as  x:
            x.write(f'{name}:{mm}\n')
        print('注册成功')
    else:
        print('密码不一致,请重新输入')


registered()

#     4、项目的配置文件采用configparser进行解析
import configparser
def login():
    inp_name=input('用户名:').strip()
    inp_pwd=input('密码:').strip()
    x=configparser.ConfigParser()
    x.read(r'C:\Users\Administrator\AppData\Local\Temp\cool5.py\db2.ini')
    u=x.options('user')
    # print(u)
    if inp_name in u:
        if inp_pwd == x.get('user',inp_name):
            print('登录成功')
        else:
            print('登录失败')
    else:
        print('用户名不存在')

login()

 

posted @ 2020-03-31 21:48  It's_cool  阅读(103)  评论(0)    收藏  举报