题目:写一个用户登录验证程序,文件如下 1234.json {"expire_date": "2021-01-01", "id": 1234, "status": 0, "pay_day": 22, "password": "abc"}
用户名为json文件名,密码为 password。判断是否过期,与expire_date进行对比。登陆成功后,打印“登陆成功”,三次登陆失败,status值改为1,并且锁定账号。三次验证的密码进行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('登录失败!')转载于:https://www.cnblogs.com/GGGGGGZX/p/9638320.html