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文件里面使用经过加密的数据库用户名+密码,因为在自己做过的项目中,有这样的需求,尤其是一些大公司,或者说上市公司,是不会把这些敏感 ...
随机推荐
- (转)淘淘商城系列——Solr集群搭建
http://blog.csdn.net/yerenyuan_pku/article/details/72957201 我们之前做的搜索使用的是Solr的单机版来实现的,正是由于我们现在商品数据量不多 ...
- 一键安装本地yum仓库脚本
#!/bin/bash#By:zhaocheng#Date:2019-01-18#Version v1 [ -d /media/cdrom ] || mkdir /media/cdrom[ -d /m ...
- centos7安装mwget下载资源,提升下载速度
1.安装mwget wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2 ta ...
- js声明变量作用域会提前
var s = 1; function test() { console.info(s); var s = 2; console.info(s); } test(); >>>unde ...
- UDP、线程、mutex锁(day15)
一.基于UDP的网络编程模型 服务器端 .创建socket. .将fd和服务器的ip地址和端口号绑定 .recvfrom阻塞等待接收客户端数据 .业务处理 .响应客户端 客户端: .创建socket ...
- Ajax传递的参数如何在浏览器中查看
如图当需要在浏览器中知道Ajax传递的参数可以,点击浏览器的右键检查,点击XHR,此时要记得提交带有参数的Ajax页面, 这样才可以显示出来传递的参数
- Problem 48
Problem 48 The series, 11 + 22 + 33 + ... + 1010 = 10405071317. Find the last ten digits of the seri ...
- elementUI 时间选择器,时间选择快捷键
elementUI的时间快捷键,使用属性:picker-options="pickerOptions",由于pickerOptions的定义很长,也在其他地方共用,因此建议提取出来 ...
- 5、SpringBoot+MyBaits+Maven+Idea+pagehelper分页插件
1.为了我们平时方便开发,我们可以在同一个idea窗口创建多个项目模块,创建方式如下 2.项目中pom.xm文件的内容如下 <?xml version="1.0" encod ...
- Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)
1.前言 对于Long 类型的数据,如果我们在Controller层通过@ResponseBody将返回数据自动转换成json时,不做任何处理,而直接传给前端的话,在Long长度大于17位时会出现精度 ...