python之hashlib模块(MD5校验)
示例:大文件md5校验
def md5(fileMd5):
import hashlib
md5_value = hashlib.md5()
with open(fileMd5,'rb') as f:
while True:
#每次读取2048个字节数据
data = f.read(2048)
if not data:
brea
#计算md5值
md5_value.update(data)
return md5_value.hexdigest()
示例:密码加密
本例我一个登录验证的装饰器
#!/usr/bin/env python
#-*- coding:utf-8 -*-
"""
功能:
登录验证模块
详细说明:
1.密码文件为passwd
2.passwd未创建或丢失,会提示:密码文件不存在,建议重新注册!!
3.未注册用户登录会提示:用户名不存在,请您先进行注册!
4.已注册用户登录时,忘记密码,尝试3次后密码还不正确则退出验证,等一会儿则可以重新登录
5.作为装饰器进行登录验证
"""
import json
import hashlib
import os
pwd = os.getcwd()
fileName = os.path.join(pwd,"passwd") #将明文密码通过md5进行加密,返回一个加密后的md5的值
def calc_md5(passwd):
md5 = hashlib.md5("haliluya")
md5.update(passwd)
ret = md5.hexdigest()
return ret #新用户注册模块
def register():
#判断密码文件passwd是否存在,存在则载入列表,不存在就重新创建一个空字典
if os.path.exists(fileName):
#载入用户列表,数据结构为字典,k=userName,v=passwdMd5
with open("passwd", "r+") as loadsFn:
userDB = json.loads(loadsFn.read())
else:
userDB = {}
#让用户输入用户名
userName = raw_input("姓名:")
#标志位:控制循环跳出
flag = True
while flag:
#用户注册时,需输入两次密码
passwd1 = raw_input("密码:")
passwd2 = raw_input("确认密码:")
#如果两次密码不一致,则不执行下一步,再次输入密码并进行确认
if not passwd1 == passwd2:
continue
else:
#两次输入密码一致,标志位置为False,下次跳出循环
flag = False
#调用calc_md5函数将明文密码转为对应的md5值,用于保存
passwdMd5 = calc_md5(passwd1)
#将用户名与密码对应存入字典userDB中
userDB[userName] = passwdMd5
#将用户名和密码存入文件
with open(fileName, "w") as dumpFn:
dumpFn.write(json.dumps(userDB)) #用户登录验证,装饰器
def login(func):
def decorater(*args,**kwargs):
#判断passwd文件是否存在,存在则载入userDB(用户:密码),否则就重新注册新的passwd文件并返回
if os.path.exists(fileName):
with open("passwd", "r+") as loadsFn:
userDB = json.loads(loadsFn.read())
else:
print "密码文件不存在,建议重新注册!!"
register()
return name = raw_input("用户名:")
#用户名是否存在,存在就继续输入密码,不存在则进行注册
if name in userDB.keys():
flag = True
counter = 0
#循环输入密码,密码正确,flag=False(下次直接跳出循环)并执行函数,密码错误则允许尝试3次,超过3次验证失败,退出验证
while flag:
passwd = raw_input("密码:")
passwdMd5 = calc_md5(passwd)
if passwdMd5 == userDB[name]:
flag = False
func(*args,**kwargs)
elif counter > 2:
print "您已经尝试了3次,请过会儿再试!!"
return
else:
counter += 1
else:
print "用户名不存在,请您先进行注册!"
register()
return decorater if __name__ == "__main__":
@login
def hello():
print "Hello world!"
hello()
python之hashlib模块(MD5校验)的更多相关文章
- 《Python》hashlib模块、configparser模块、logging模块
一.hashlib模块 Python的hashlib模块中提供了常见的摘要算法,如md5,sha1等等. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的字符串(通 ...
- python中hashlib模块用法示例
python中hashlib模块用法示例 我们以前介绍过一篇Python加密的文章:Python 加密的实例详解.今天我们看看python中hashlib模块用法示例,具体如下. hashlib ha ...
- 模拟ssh、黏包、hashlib模块(MD5)
待补充..... 一.模拟ssh 二.黏包 1.黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd) res=subprocess.Popen(cm ...
- python hashlib模块 md5加密 sha256加密 sha1加密 sha512加密 sha384加密 MD5加盐
python hashlib模块 hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, ...
- 通过python的hashlib模块计算一个文件的MD5值
Python的hashlib提供了很多摘要算法,如MD5,SHA1等常用算法. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(如MD5值 ...
- hashlib模块 md5 sha1
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示) 对于同一个字符串,不管这个字符串有多长 ...
- python的hashlib模块
# -*- coding: utf-8 -*- """python 的MD5 sha1 模块""" import hashlib #md5的 ...
- Python中hashlib模块
介绍hashlib hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. ...
- python基础--hashlib模块
hashlib模块用于加密操作,代替了md5和sha模块, 主要提供SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法. # -*- coding:utf-8 - ...
随机推荐
- ZooKeeper介绍(转载)
关于ZooKeeper,下面引用了一片文章,原文地址是:http://www.cnblogs.com/wuxl360/p/5817471.html 一.分布式协调技术 在给大家介绍ZooKeeper之 ...
- 数字pid笔记(2)
void pid_Cal(void) { //float index = 0; IncPid * p = NULL; p = &g_PID_Inc; p->SetVal = sys_pa ...
- 201812-4 数据中心(kruskal)
考场上的时候被题目完全蒙住了,当时状态也不好,前几次考试每次考试当天就头晕感冒流鼻涕 好的,以上都是借口,自己没有好好复习才是真的... 题目: 好的,以上题目简述就是:给你一个无向连通图,求它的最小 ...
- Educational Codeforces Round 74 (Rated for Div. 2) C. Standard Free2play
链接: https://codeforces.com/contest/1238/problem/C 题意: You are playing a game where your character sh ...
- P4053 [JSOI2007]建筑抢修 堆贪心
思路:堆贪心 提交:1次 题解: 先按时间\(sort\),然后如果能修就直接扔堆里,不能修取堆顶比一下时间长短,把时间短的扔进堆: #include<cstdio> #include&l ...
- MySQL percona-toolkit工具详解
一.检查和安装与Perl相关的模块 PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境. 依赖包检查命令为: rpm -qa perl-DBI perl-DBD-MySQL perl ...
- word图片上传到服务器
参考:http://blog.ncmem.com/wordpress/2019/08/07/word%e5%9b%be%e7%89%87%e4%b8%8a%e4%bc%a0%e5%88%b0%e6%9 ...
- GAN生成式对抗网络(三)——mnist数据生成
通过GAN生成式对抗网络,产生mnist数据 引入包,数据约定等 import numpy as np import matplotlib.pyplot as plt import input_dat ...
- Subsequence (POJ - 3061)(尺取思想)
Problem A sequence of N positive integers (10 < N < 100 000), each of them less than or equal ...
- 关于openstack 专业博主地址.后续更新
首先官方文档要放的 https://docs.openstack.org/ 关于导入镜像方面说的很详细的. https://www.cnblogs.com/liawne/p/9322221.html ...