用户注册登录验证 多版本集合 + hashlib加密
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/5/6 0006 12:22
# @Author : Anthony.Waa
# @Site :
# @File : 用户登录(三次错误机会).py
# @Software: PyCharm # demo1
# 定义用户列表
user_list = [
{'username': 'anthony', 'password': '123'},
{'username': 'chris', 'password': '123'},
{'username': 'alex', 'password': '123'},
{'username': 'oldboy', 'password': '123'},
] # 定义次数
count = 0 while True:
# 用户名和密码
users = input("请输入你的用户名:")
pasws = input("请输入你的密码:") # 循环用户列表
for lists in user_list:
if lists['username'] == users and lists['password'] == pasws:
print("登录成功")
exit()
else:
print("登录失败,请重新登陆.")
count += 1
break
if count == 3:
print("你的用户名或密码,错误输入超过3次,退出登陆")
exit() # ====================================================================================== # demo2
# 定义用户列表
user_list = [
{'username': 'anthony', 'password': '123'},
{'username': 'chris', 'password': '123'},
{'username': 'alex', 'password': '123'},
{'username': 'oldboy', 'password': '123'},
] # 定义次数
count = 0 # 定义状态
flag = False while True:
# 用户名和密码
users = input("请输入你的用户名:")
pasws = input("请输入你的密码:") # 循环用户列表
for lists in user_list:
if lists['username'] == users and lists['password'] == pasws:
flag = True
else:
pass
# 判断登陆状态
if flag:
print("登录成功")
exit()
else:
print("登录失败,请重新登陆.")
count += 1
flag = False
# 判断是否失败次数超过3次
if count == 3:
print("你的用户名或密码,错误输入超过3次,退出登陆")
exit() ====================================================================
# 用户名和密码加密3次登录验证
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/7/8 0008 11:44
# @Author : Anthony.Waa
# @Site :
# @File : auth.py
# @Software: PyCharm import hashlib
from conf import settings
def login(): # 用户登录
count_end = 3
counts = 1
while True:
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
verifys = verify(username,password)
if verifys == True:
print('登录成功')
exit()
else:
count_end -= 1
print('账户名或密码输入错误,请重新输入...')
print('还剩%s次输入机会...'%count_end)
if counts == 3:
print('账户或密码输入错误超过3次')
exit()
counts += 1 def verify(username,password): # 用户名和密码验证
md5_obj = hashlib.md5(username.encode('utf-8'))
md5_obj.update(password.encode('utf-8'))
with open(settings.userinfo_path, 'r') as read_verify:
for userinfo_line in read_verify:
if md5_obj.hexdigest() == userinfo_line.strip():
return True def register(): # 用户注册
while True:
print('提示:用户名必须小于8位,密码必须小于12位')
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip() if 1 < len(username) <=8 and 1 < len(password) <= 12:
md5_obj = hashlib.md5(username.encode('utf-8'))
md5_obj.update(password.encode('utf-8'))
verifys = verify(username, password) # 验证密码和用户名是否存在 if verifys == True:
print('用户名已存在,请重新输入...')
else:
with open(settings.userinfo_path,'a+') as write_register:
write_register.write(md5_obj.hexdigest()+'\n')
print('注册成功')
judge_exit = input('是否继续注册(Y/N):').strip()
if judge_exit.lower() == 'y':
continue
elif judge_exit.lower() == 'n':
print('退出成功')
exit()
else:
print('输入错误') else:
print('用户名或密码位数不符合规定...')
continue login()
register()
用户注册登录验证 多版本集合 + hashlib加密的更多相关文章
- nodeJS---express4+passport实现用户注册登录验证
网上有很多关于passport模块使用方法的介绍,不过基本上都是基于express3的,本文介绍在express4框架中使用passport模块. 前言 passport是一个功能单一,但非常强大的一 ...
- Laravel登录验证碰到的坑 哈希验证匹配问题
用laravel 写登录验证 本来是用Crypt加密 添加用户到数据库的 后来验证密码 解密时一直报错 The payload is invaild 由于本人是laravel框架小白 自己思考许久未 ...
- 客户端登录验证 -- ESFramework 4.0 快速上手(15)
在之前版本的Rapid引擎中,是没有提供客户端登陆验证的机制的,如果要验证用户的帐号密码信息,我们只有自己手动通过自定义信息来实现.在2011.04.25发布的新版本中,客户端Rapid引擎,则内置了 ...
- centos7: svbversion版本的安装配置+tortoisesvn登录验证
centos7: svbversion版本的安装配置+tortoisesvn登录验证 命令工具:svnadmin create #创建版本库 hotcopy #版本库热备份 Islocks #打印所有 ...
- 【ADO.NET】2、各种版本的 简单登录验证
一.简单登录验证(防SQL注入) GetString(序号) 返回某一列的值(当用户不记得列名序号时,可使用GetOrdinal()获取到序号)GetInt32(序号) 针对的是 int 字段,返回i ...
- Linux登录验证机制、SSH Bruteforce Login学习
相关学习资料 http://files.cnblogs.com/LittleHann/linux%E4%B8%AD%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E8%AE% ...
- jQuery之标签操作和返回顶部、登录验证、全选反选、克隆示例
一.样式操作 1.JQ中的样式类 somenode.addClass();// 添加指定的CSS类名. somenode.removeClass();// 移除指定的CSS类名. somenode.h ...
- Python_socket常见的方法、网络编程的安全注意事项、socketsever模块、浏览器中在一段时间记录用户的登录验证机制
1.socket常见的方法 socket_常见方法_服务器端 import socket from socket import SOL_SOCKET,SO_REUSEADDR sk = socket. ...
- Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven)
Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven) 本篇和 Spring 没有什么关系,只是学习 Spring,必备一些知识,所以放在这里了. 本篇内容: (1)M ...
随机推荐
- 集合运算(UNION)
表的加法 集合运算:就是满足统一规则的记录进行的加减等四则运算. 通过集合运算可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中记录的集合. 集合运算符:用来进行集合的运算符. UNIO ...
- javaee IO流复制的方法
package Zjshuchu; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileN ...
- BZOJ 1426: 收集邮票 数学期望 + DP
Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且 买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡 ...
- eas启动服务器时非法组件
EAS实例启动报系统中存在非法组件,实例启动失败: 组件检查机制,要求除了 $EAS_HOME eas\server\lib: $EAS_HOME \eas\server\deploy\files ...
- [ZJOI2016]小星星(容斥+dp)
洛谷链接:https://www.luogu.org/problemnew/show/P3349 题意相当于给一棵树重新赋予彼此不同的编号,要求树上相邻的两个节点在给定的另外一个无向图中也存在边相连. ...
- [bzoj4477 Jsoi2015]字符串树 (可持久化trie)
传送门 Solution 复习下tire( ̄▽ ̄)/ 裸的可持久化tire,我用树剖求了下LCA Code #include <cstdio> #include <cstring&g ...
- JDK环境变量设置(linux)
1.下载jdk1.8版本软件包 2.解压 tar -zxvf jdk1.8.tar.gz mv jdk1.8 /usr/local/ 3.添加环境变量 vim /etc/profile 在文件底部加入 ...
- font-size:0消除元素间距
容易发现,inline-block元素之间会有间距, <!DOCTYPE html> <html> <head> <title></title&g ...
- vue项目初始化结构
- 利用IO多路复用,使用linux下的EpollSelector实现并发服务器
import socket import selectors # IO多路复用选择器的模块 # 实例化一个和epoll通信的选择器 epoll_selector = selectors.EpollSe ...