#!/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的更多相关文章

  1. django注册在使用hashlib对密码加密时报Unicode-objects must be encoded before hashing

    在使用sh1等hashlib方法进行加密时报:Unicode-objects must be encoded before hashing 解决办法:对要加密的字符串指定编码格式 解决之前: s1=s ...

  2. 密码加密与微服务鉴权JWT

    博客学习目标 1.用户注册时候,对数据库中用户的密码进行加密存储(使用 SpringSecurity). 2.使用 JWT 鉴权认证. 一.BCrypt 密码加密 1.常见的加密方式 任何应用考虑到安 ...

  3. web登录密码加密

    文章:如何实现登录页面密码加密 文章:用RSA加密实现Web登录密码加密传输 文章:web登录用户名密码加密 知乎文章:Web前端密码加密是否有意义? 文章:记录一次黑客模拟攻击 成功拿到淘宝账号和密 ...

  4. WCF身份验证之用户名密码认证

    WCF支持多种认证技术,例如Windowns认证.X509证书.Issued Tokens.用户名密码认证等,在跨Windows域分布的系统中,用户名密码认证是比较常用的,要实现用户名密码认证,就必须 ...

  5. Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作

    # -*- coding: gb2312 -*- #用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作 #作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.co ...

  6. 【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)

    最近在写一个C#的项目,用户需求是实现Winform的多文档界面与Matlab算法程序之间的交互.做了一段时间发现,这既能利用业余时间,实战中也可学习一些技术,同时刚毕业也增加一份收入.所以后面会不断 ...

  7. 帝国cms7.0忘记后台管理账户用户名密码

    最近刚登陆以前的网站,但是发现自己的后台管理用户名密码已经忘记,于是到帝国cms论坛里面找了一下解决方案,成功解决问题.特此分享一下解决成功经验. 原帖地址:http://bbs.phome.net/ ...

  8. mysql8.0新增用户及密码加密规则修改

    MySQL8.0已经发布GA版,当前最新GA版本为8.0.12.虽然相对于之前版本,MySQL8.0没有加入新元素,但是,经过代码重构,MySQL8.0的优化器更加强大,同时也有一些新特性,如支持索引 ...

  9. spring boot 配置文件加密数据库用户名/密码

    这篇文章为大家分享spring boot的配置文件properties文件里面使用经过加密的数据库用户名+密码,因为在自己做过的项目中,有这样的需求,尤其是一些大公司,或者说上市公司,是不会把这些敏感 ...

随机推荐

  1. 【技术累积】【点】【编程】【13】XX式编程

    (原)函数式编程 核心概念 函数式一等公民(输入输出啥的都可以是函数): 纯函数,固定输入带来固定输出: 阅读性良好,无并发问题,但效率偏低: 大历史背景 旨在描述问题如何计算: 有两位巨擘对问题的可 ...

  2. 很实用的html meta标签实现页面跳转

    就算你是有很多年开发经验的web开发工程师,有着很多web开发经验,对于先进的web开发技术有着很深刻的研究,然而你却忽略了那些最最基础的东西!现在我来问你,你是否对html所有的标签都能熟练的使用呢 ...

  3. eoLinker AMS 专业版V3.3发布:分享项目可以测试并选择分享内容等

    eoLinker AMS是集API文档管理.API自动化测试.开发协作三位一体的综合API开发管理平台,是中国最大的在线API管理平台.目前eoLinker AMS已经为来自全球的超过两万家企业托管超 ...

  4. 深度遍历DFS

    目录: https://zhipianxuan.github.io/ 一.树的DFS 二.二维矩阵的DFS 三.图的DFS 一.题目一:二维矩阵(输出所有路径数) 思路:从起点开始,DFS,直到走到终 ...

  5. python3使用465端口发送邮件来解决阿里云封闭25端口问题

    import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr #发件人邮箱账号my_send ...

  6. [Ynoi2011]D1T1

    题目大意: 给定一个序列$a_1,a_2,\dots,a_n$,进行$m$次操作,每次操作如下: 1. 给定$x,y,z$,对所有下标为$y,y+x,y+2x,\dots$的元素加上$z$(保证$y\ ...

  7. Git 基础教程 之 创建与合并分支

  8. android 权限清单

    常用权限: 读写存储卡装载和卸载文件系统 android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_EXTERNAL_STOR ...

  9. 学习EXTJS6(3)基本概念

    ExtJS不再纠缠HTML和CSS上.概念和传统的程序相近.如面板panel,布局Layout.组件Component等等. 1.渲染Render:ExtJS页面在浏览器中装载完成后完全展现出来的一个 ...

  10. HDU 4456 Crowd

    Crowd Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...