4. 用户验证

题目:写一个用户登录验证程序,文件如下
1234.json
{"expire_date": "2021-01-01", "id": 1234, "status": 0, "pay_day": 22, "password": "abc"}

  1. 用户名为json文件名,密码为 password。
  2. 判断是否过期,与expire_date进行对比。
  3. 登陆成功后,打印“登陆成功”,三次登陆失败,status值改为1,并且锁定账号。
  4. 三次验证的密码进行hashlib加密处理。即:json文件保存为md5的值,然后用md5的值进行验证。
import json
import time
import hashlib


def compare(a, b, *args):
    global count
    if a < b:
        verification(password, pin, count)
    elif a > b:
        print('expire!')


def verification(a, b, c):
    global count
    global login
    if a == b:
        print('登录成功!')
        login = 1
    elif count != b:
        count += 1


f = open('jersey_001.json', 'r')
load_dict = json.load(f)  # 获取的是json文件里的字典类

password = load_dict.get('password')
hash_md5 = hashlib.md5(password.encode('utf-8'))
new_password = hash_md5.hexdigest()

date = load_dict.get('expire_date')
ex_year = date[0:4]
ex_mon = date[5:7]
ex_day = date[8:]

today = time.strftime("%Y-%m-%d", time.localtime())  # type:str
year = today[0:4]
mon = today[5:7]
day = today[8:]

count = 1
login = 0

while load_dict.get('status') == 0 and login == 0:
    if count < 4:
        pin = input('please input your password:')
        compare(year, ex_year, password, pin, count)  # 年份比较是否过期,如果年份相等,则不会满足此函数,进入下面的if条件判断:
        if year == ex_year:
            compare(mon, ex_mon, password, pin, count)
            if mon == ex_mon:
                compare(day, ex_day, password, pin, count)
                if day == ex_day:
                    print('expire!')
                    break

    elif count >= 4:
        print('登录失败!')
        load_dict['status'] = 1
        load_dict['password'] = new_password
        # 将status改为了1,password改为md5格式
        with open('jersey_001.json', 'w') as f_w:
            json.dump(load_dict, f_w)
            # 退出循环,退出文件——当下一次进入文件的时候直接进入 status=1,然后以md5进行比较密码
        f_w.close()

if load_dict.get('status') == 1:
    pin_1 = input('请输入密码的md5值进行验证:')
    # 将输入的密码改为md5格式,然后和文件中的密码md5格式进行比较
    if pin_1 == new_password:
        print('登录成功!')
    else:
        print('登录失败!')

猜你喜欢

转载自www.cnblogs.com/GGGGGGZX/p/9638320.html
今日推荐