用户注册登录验证 多版本集合 + 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 ...
随机推荐
- C#访问Win 32的一些尝试
使用C#调用Win 32 Api大部分情况下基本只涉及到参数类型的转变,但在遇到Win 32 Api返回LPVOID *lpBuff 时会遇到一些解析遍历难题.lpBuff为二维指针,*lpBuff是 ...
- openstack--rabbitmq
一.MQ 全称为 Message Queue, 消息队列( MQ ) 是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们. 消息传 ...
- 团体程序设计天梯赛-练习集-L1-042. 日期格式化
L1-042. 日期格式化 世界上不同国家有不同的写日期的习惯.比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”.下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期. 输 ...
- 【转载】Java 集合详解
转载:https://www.cnblogs.com/ysocean/p/6555373.html 一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段 ...
- 死磕itchat源码--core.py
core.py文件中的Core类定义了itchat的所有接口.且,仅仅是定义了接口,全部在component包中实现重构.其用法如下表述: 缺省 源码如下: # -*- encoding: utf-8 ...
- 配平化学方程式的C++代码实现
配平化学方程式的C++代码实现 纪念一下我今天写过了 20171006. (去年的这个时候我就有了这个大胆的想法, 当时的思路是:字符串处理->暴力搜系数,可是太年轻写不对,我那会还是个只会模拟 ...
- Running to the End(Codeforces & AtCoder 百套计划)
...Reserved for the future... 仿照xxy dalao的CF&CC百套计划,做了一个Codeforces & AtCoder 百套计划,按这个速度刷下去,每 ...
- python爬虫05 | 年轻人,不会正则表达式你睡得着觉?有点出息没有?
现在 你已经会使用 python 模拟浏览器 进行一些 Http 的请求了 那么请求完之后 服务器返回给我们一堆源代码 我们可不是啥都要的啊 我们是有原则的 我们想要的东西 怎么能一股脑的啥都往自己兜 ...
- 【ZOJ 4060】Flippy Sequence
[链接] 我是链接,点我呀:) [题意] [题解] 按照两个区间的排列方式 我们可以分成以下几种情况 会发现这两个区间的作用 最多只能把两段连续不同的区间变为相同. 那么写个for处理出连续不相同的一 ...
- docker 容器操作( 以 tomcat 为例 )
一.容器操作 一个镜像可以启动多个容器.比如一个 tomcat 镜像,可以启动多个tomcat 容器,启动后的这些 tomcat 都是各自独立的 二.步骤 1.搜索镜像 [root@localhost ...