Hashlib 用户名密码加密 2.0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/7/10 0008 11:44
# @Author : Anthony.Waa
# @Site :
# @File : auth.py
# @Software: PyCharm import hashlib
from conf import settings
from core.logger import Logger def login(): # 用户登录
count_end = 3
counts = 1
while True:
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
verifys = verify(username, password)
if verifys == True:
if user_identity_status['identity'] == '001':
print('管理员%s登录成功'%user_identity_status['usernaems'])
break
elif user_identity_status['identity'] == '002':
print('用户%s登录成功'%user_identity_status['usernaems'])
break
else:
print(verifys)
count_end -= 1
print('账户名或密码输入错误,请重新输入...')
print('还剩%s次输入机会...' % count_end)
if counts == 3:
print('账户或密码输入错误超过3次')
exit()
counts += 1 user_identity_status = {'usernaems':None,'identity':None,'status':None} # 管理员身份为001,普通用户为002 def verify(username, password): # 用户名和密码验证
md5_obj = hashlib.md5(username.encode('utf-8'))
md5_obj.update(password.encode('utf-8'))
while True:
with open(settings.manageinfo_path, 'r') as read_manage_verify:
for manageinfo_line in read_manage_verify:
if manageinfo_line.strip() == md5_obj.hexdigest():
user_identity_status['usernaems'] = username
user_identity_status['identity'] = '001'
return True
else:
with open(settings.userinfo_path, 'r') as read_verify:
for userinfo_line in read_verify:
if userinfo_line.strip() == md5_obj.hexdigest():
user_identity_status['usernaems'] = username
user_identity_status['identity'] = '002'
return True
else:
return False def register(): # 用户注册
while True:
print('提示:用户名必须小于8位,密码必须小于12位')
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
md5_obj = hashlib.md5(username.encode('utf-8'))
md5_obj.update(password.encode('utf-8')) if 1 < len(username) <= 8 and 1 < len(password) <= 12:
verifys = verify(username, password) # 验证密码和用户名是否存在
if verifys:
print('用户名:%s 已存在,请重新输入...' % username)
break
else:
update_identitys = input('请确认是否将%s设定为管理员(Y/N)' % username).strip() # 确认用户是否为管理员 if update_identitys.lower() == "y":
with open(settings.manageinfo_path, 'a+') as manage_write:
manage_write.write(md5_obj.hexdigest() + '\n')
print('管理员%s注册成功'%username)
with open(settings.userinfo_path, 'a+') as write_register:
write_register.write(md5_obj.hexdigest() + '\n')
break elif update_identitys.lower() == 'n':
with open(settings.userinfo_path, 'a+') as write_register:
write_register.write(md5_obj.hexdigest() + '\n')
print('%s已注册成功' % username)
judge_exit = input('是否继续注册(Y/N):').strip()
if judge_exit.lower() == 'y':
continue
elif judge_exit.lower() == 'n':
Logger.logger.warning('退出注册程序' + '\n')
break
else:
Logger.logger.warning('%s用户注册时,输入错误' % username + '\n') else:
Logger.logger.warning('%s用户输入选项错误,请重新输入...' % username) else:
print('用户名或密码位数不符合规定...')
continue def user_exit():
Logger.logger.warning('退出成功' + '\n')
exit()
Hashlib 用户名密码加密 2.0的更多相关文章
- django注册在使用hashlib对密码加密时报Unicode-objects must be encoded before hashing
在使用sh1等hashlib方法进行加密时报:Unicode-objects must be encoded before hashing 解决办法:对要加密的字符串指定编码格式 解决之前: s1=s ...
- 密码加密与微服务鉴权JWT
博客学习目标 1.用户注册时候,对数据库中用户的密码进行加密存储(使用 SpringSecurity). 2.使用 JWT 鉴权认证. 一.BCrypt 密码加密 1.常见的加密方式 任何应用考虑到安 ...
- web登录密码加密
文章:如何实现登录页面密码加密 文章:用RSA加密实现Web登录密码加密传输 文章:web登录用户名密码加密 知乎文章:Web前端密码加密是否有意义? 文章:记录一次黑客模拟攻击 成功拿到淘宝账号和密 ...
- WCF身份验证之用户名密码认证
WCF支持多种认证技术,例如Windowns认证.X509证书.Issued Tokens.用户名密码认证等,在跨Windows域分布的系统中,用户名密码认证是比较常用的,要实现用户名密码认证,就必须 ...
- Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作
# -*- coding: gb2312 -*- #用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作 #作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.co ...
- 【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)
最近在写一个C#的项目,用户需求是实现Winform的多文档界面与Matlab算法程序之间的交互.做了一段时间发现,这既能利用业余时间,实战中也可学习一些技术,同时刚毕业也增加一份收入.所以后面会不断 ...
- 帝国cms7.0忘记后台管理账户用户名密码
最近刚登陆以前的网站,但是发现自己的后台管理用户名密码已经忘记,于是到帝国cms论坛里面找了一下解决方案,成功解决问题.特此分享一下解决成功经验. 原帖地址:http://bbs.phome.net/ ...
- mysql8.0新增用户及密码加密规则修改
MySQL8.0已经发布GA版,当前最新GA版本为8.0.12.虽然相对于之前版本,MySQL8.0没有加入新元素,但是,经过代码重构,MySQL8.0的优化器更加强大,同时也有一些新特性,如支持索引 ...
- spring boot 配置文件加密数据库用户名/密码
这篇文章为大家分享spring boot的配置文件properties文件里面使用经过加密的数据库用户名+密码,因为在自己做过的项目中,有这样的需求,尤其是一些大公司,或者说上市公司,是不会把这些敏感 ...
随机推荐
- VTK嵌入MFC同步显示
使用VTK嵌入MFC,实现四视图更新,机制和细节参考原文. 原文链接:http://blog.csdn.net/www_doling_net/article/details/8939115 原文代码: ...
- Shell 环境变量也是变量
跟定义普通变量一样,语法是 变量名=值,只不过这个名字叫 PATH,值是路径 shell PATH=/usr/local/python-2.7.6/bin 导入的话使用export命令 shell e ...
- fiddler抓包 IOS11以上系统
想要使用fiddler对iphone X进行抓包,按照以前的配置方法,走一遍.还是抓不成,原来是因为IOS11操作系统中,安装完证书之后,还需要再手动信任证书才能正常抓包. 以下内容来自:https: ...
- Apache2.2 启动和停止命令
1.启动:net start apache2.2 2.停止:net stop apache2.2
- 优秀的web端 vue框架
之前得到消息vue在GitHub已经超过react,成为第一大框架,让我们来看看以vue为基础的开发框架有哪些? Element(start-28128) 饿了么前端推出的基于 Vue.js 2.0 ...
- python第十周:进程、协程、IO多路复用
多进程(multiprocessing): 多进程的使用 multiprocessing是一个使用类似于线程模块的API支持产生进程的包. 多处理包提供本地和远程并发,通过使用子进程而不是线程有效地侧 ...
- 14.Idea在html里面的快捷键
1.IntelliJ-Idea里常用的快捷键 Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*…*/ ) Shift+F6 重构-重命名 Ctrl+X 删除行 Ctrl+D 复制行 C ...
- CF789B. Masha and geometric depression
/* CF789B. Masha and geometric depression http://codeforces.com/contest/789/problem/B 水题 各种特判,贼烦 */ ...
- linux下最简单的端口转发工具
linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载wget http://www.boutell.com/ ...
- HDOJ1796 How many integers can you find(dfs+容斥)
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...