#!/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. C#访问Win 32的一些尝试

    使用C#调用Win 32 Api大部分情况下基本只涉及到参数类型的转变,但在遇到Win 32 Api返回LPVOID *lpBuff 时会遇到一些解析遍历难题.lpBuff为二维指针,*lpBuff是 ...

  2. 【sqli-labs】 less1 GET - Error based - Single quotes - String(GET型基于错误的单引号字符型注入)

    GET方式提交id参数 添加单引号,出现报错,爆出数据库名称和部分SQL语句 http://localhost/sqli/Less-1/?id=1' 使用order by猜测字段数,用#注释掉后面li ...

  3. JSP_内置对象_session

    session表示客户端与服务器的一次会话. Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间. 从上述定义中可以看到,s ...

  4. webstorm for mac

    mac上使用webstrom,破解的方法 参见博客:Webstorm 破解2016.1 for mac 上面的说明有点问题,博主的写的有点问题.应该是1.先打开到注册页面:2.再关闭webstrom; ...

  5. Apex语言(七)集合

    1.集合 集合是可以存储多个记录数的变量类型. List列表集合可以包含任何数量的数据,与数组类似. Set列表集合包含多个无序的唯一记录数,集合不能具有重复记录,与列表类似. Map地图是一个键值对 ...

  6. Dart 调用C语言混合编程

    Dart 调用C语言本篇博客研究Dart语言如何调用C语言代码混合编程,最后我们实现一个简单示例,在C语言中编写简单加解密函数,使用dart调用并传入字符串,返回加密结果,调用解密函数,恢复字符串内容 ...

  7. eas之MrpUI

    package com.kingdee.eas.custom.mrp.client; import java.awt.Component;import java.awt.event.*;import ...

  8. 使用百度fis3构建前端多页应用

    吾日三省吾身. 从一个完全不相干的行业转到IT,多多少少都会感到迷茫,不知道学习什么.从何学起?在几乎没有任何经验的背景下,坚持投递简历,最后终于进入了一个创业公司,开始做起了前端工作.工资勉强维持生 ...

  9. webstorm中vue项目--运行配制

    ## npm搭建的项目,需要运行npm run dev来启动 webstorm作为一款优秀的编辑器,通过配置运行设置,达到一键运行 1.添加node.js配置 2.configuration-> ...

  10. UNIX C 信号

    1.信号处理 #include <signal.h> typedef void(*sighander_t)(int); sighander_t signal(int signum,sigh ...