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文件里面使用经过加密的数据库用户名+密码,因为在自己做过的项目中,有这样的需求,尤其是一些大公司,或者说上市公司,是不会把这些敏感 ...
随机推荐
- 【sqli-labs】 less23 Error based - strip comments (GET型基于错误的去除注释的注入)
. 加单引号报错 加# http://localhost/sqli-labs-master/Less-23/?id=1'%23 错误没有改变,推测过滤了# 查看源码发现# -- 都被替换掉了 那么可用 ...
- Centos6.6 编译安装nginx
一.基本环境 nginx 1.9版以后增加了一些新的特性,支持tcp负载均衡,不过这次还是用1.8.0,这里面有个memcached的代理模块,有时间再测试下 1.centos6.6 2.nginx1 ...
- POJ_2411_Mondriaan's Dream_状态压缩dp
Mondriaan's Dream Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 15407 Accepted: 888 ...
- Java导出Excel(附完整源码)
导出excel是咱Java开发的必备技能啦,之前项目有这个功能,现在将其独立出来,分享一下.所用技术就是SpringBoot,然后是MVC架构模式.废话不多说,直接上代码了,源码点末尾链接就可以下载. ...
- BZOJ 3450: Tyvj1952 Easy 数学期望
Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) ...
- BZOJ 3631: [JLOI2014]松鼠的新家 树上差分 + LCA
Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在“树”上.松鼠想邀 ...
- DFS-BFS深度优选遍历和广度优先遍历
https://www.jianshu.com/p/b086986969e6 DFS--需要借助stack实现 stack.push stack.pop BFS--需要借助队列queue stack- ...
- ADB 常用命令学习
参考文档:https://www.cnblogs.com/bravesnail/articles/5850335.html非常感谢作者的分享,以下是我学习的记录.Android 常用adb 命令汇总- ...
- eas之导入导出
// 是否仅导出有数据的区域,该方法对所有的导出生效(默认为false)table.getIOManager().setExpandedOnly(true); 输入KDF 如果你已经有了一个完整的KD ...
- 关于node对文件的读取
设计: 通过终端git / cmd 获取用户输入路径,然后遍历路径下所有的文件,打印输出. 因为需要命令行交互,所以引入prompt库 (https://github.com/flatiron/pro ...