hashlib模块使用详情
python常用模块目录
一:hashlib简介
1、什么叫hash:hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值
2、hash值的特点是(hash值/产品有三大特性:):
2.1 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验
2.2 不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码(只能有内容返回hash值)
2.3 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的(如从网上下载文件要进行hash校验,保证网络传输没有丢包)
基于2.1和2.3可以做文件下载一致性的校验
基于2.1和2.2可以对用户密码进行加密
hash算法就像一座工厂,工厂接收你送来的原材料(可以用m.update()
为工厂运送原材料),经过加工返回的产品就是hash值
二:将指定的 “字符串” 进行加密。使用hashlib的分步解析
1)在进行md5哈希运算前,需要对数据进行编码,否则报错
import hashlib obj = hashlib.md5() #构造一个hashlib的对象 obj.update("小马过河") #update对指定字符串进行加密 print(obj) --------------结果:obj.update("小马过河") TypeError: Unicode-objects must be encoded before hashing
2)obj是hash对象
import hashlib obj = hashlib.md5() obj.update("小马过河".encode("utf-8")) print(obj,type(obj)) -------------------结果: <md5 HASH object @ 0x001C5590> <class '_hashlib.HASH'>
3)
import hashlib obj = hashlib.md5() obj.update("小马过河".encode("utf-8")) result=obj.hexdigest() print(result) --------------结果: 24f67b0f6d02adc8867d612e0e0fc40a
4)给加密增添难度
import hashlib obj = hashlib.md5("mcw@xiaoma@aaaafffff".encode("utf-8")) #添加一些内容,提高加密复杂度。此处的字符串也要先编码, obj.update("小马过河".encode('utf-8')) result = obj.hexdigest() print(result) -------------------结果: b11740508f28e04837f2c0e3a58cf990
5)用hashlib做成加密函数(添加基础的字符了的)
import hashlib def get_md5(data): #传参为需要加密的字符串obj = hashlib.md5("sidrsicxwersdfsaersdfsdfresdy54436jgfdsjdxff123ad".encode('utf-8'))obj.update(data.encode('utf-8'))result = obj.hexdigest() return result val = get_md5('123') print(val) --------------结果: 35093270b6352fa9721370b781f7b4d7
三:应用场景案例:用户账号密码登录,对明文密码进行加密
import hashlib USER_LIST = [] def get_md5(data):obj = hashlib.md5("12:;idrsicxwersdfsaersdfsdfresdy54436jgfdsjdxff123ad".encode('utf-8'))obj.update(data.encode('utf-8'))result = obj.hexdigest()return result def register():print('**************用户注册**************')while True:user = input('请输入用户名:')if user == 'N':returnpwd = input('请输入密码:')temp = {'username':user,'password':get_md5(pwd)}USER_LIST.append(temp) def login():print('**************用户登陆**************')user = input('请输入用户名:')pwd = input('请输入密码:')for item in USER_LIST:if item['username'] == user and item['password'] == get_md5(pwd):return True register() result = login() if result:print('登陆成功') else:print('登陆失败') ------------------------结果: **************用户注册************** 请输入用户名:小马过河 请输入密码:123456 请输入用户名:N **************用户登陆************** 请输入用户名:小马过河 请输入密码:123456 登陆成功
#用户登录场景分析:实现用户注册,然后进行用户登录的代码分析。
#代码分析:
1、用户登录需要使用密码,密码一定要加密,保证用户的信息安全。
1)加密可以使用hashlib模块进行加密。
2)加密可以写成加密函数
3)提高密码解密的复杂性,代码中多加字符串。(加密算法虽然依然非常厉害,但是也存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。)
2、用户注册写成用户注册的函数,用户登录写成用户登录的函数。
3、先执行用户注册的函数,再执行用户登录的函数
4、注册与登录需要交互,用到input函数接收用户输入
5、如果用户注册和用户登录用到死循环,那么就要判断用什么来终止循环(比如这里是输入N)
6、用户注册提交的密码加密的密文写入数据库。、用户注册提交的密码加密的密文写入数据库。
7、用户登录输入的密码,使用相同加密函数加密后与数据库密文比对,相等就登录,否则就失败
8、登录的本质是判断从用户接收的加密后密文和注册时存入数据库的密文对比,用户名密文对比成功,则继续往下执行登录后的操作。
9、用户输入密码要防止旁人看到,可以使用getpass模块
10、与密码相关的很重要,一定要加密。包括自己拥有的影响大的重要数据也要加密,防止黑客入侵获取而泄密。
四:校验文件的一致性(如何保证下载的文件过程中不丢包,保证下载数据的完整性)
五:破解用户注册的密码
六、hmac模块的加密方式,与hashlib类似
参考链接:
https://www.cnblogs.com/sui776265233/p/9224754.html 男孩
https://www.cnblogs.com/breezey/p/6664733.html
查看链接:
https://blog.csdn.net/secret5/article/details/70150486
转载于:https://www.cnblogs.com/machangwei-8/p/10701338.html
hashlib模块使用详情相关推荐
- 使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
文章目录: 1 hashlib介绍 2 hashlib模块使用 2.1 查看hashlib中有哪些hash算法 2.2 对字符串进行加密 2.3 对于数据比较大,加密可以分块,结果一样 2.4 has ...
- 4-20模块 序列化模块 hashlib模块
1,模块,py文件就是模块,py之所以好用就是模块多. 2,模块的分类: 1,内置模块,python 安装时自带的模块 2,扩展模块,别人写好的,需要安装之后,可以直接使用.itchat微信模块, b ...
- python之time模块和hashlib模块
一.time模块 import time print(time.strftime('%Y-%m-%d %H:%M:%S'))#获取当前的格式化时间,time.strftime(format) prin ...
- md5模块(Python内置模块)和hashlib模块
转自https://my.oschina.net/duhaizhang/blog/67214 MD5模块用于产生消息摘要,康用来判断文件是否相同. python的md5模块使用非常简单,包括以下几个函 ...
- python hashlib模块_python3 hashlib模块
Python3 hashlib模块和hmac 模块(加密) hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha ...
- 反射,hashlib模块,正则匹配,冒泡,选择,插入排序
一.反射(自省) 首先通过一个例子来看一下本文中可能用到的对象和相关概念. import sys # 模块,sys指向这个模块对象import inspectdef foo(): pass # 函数, ...
- Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块...
一.前提介绍: 可以开辟作用域的只有类,函数,和模块 for循环 if,else: 不能开辟自己的作用域 避免程序复用和重复调用,将这些写到一个.py文件中,做成一个模块,进行调 ...
- 模拟ssh, hashlib模块, struct模块, subprocess模块
一. 模拟ssh # ===================================== 服务器端 =====================================import so ...
- hashlib 模块用来进行hash
hashlib的基本概述: python中的 hashlib 模块用来进行hash 或者md5加密,而且这种加密是不可逆的,所以这种算法又被称为摘要算法, 其支持Opennssl库提供的所有算法,包括 ...
最新文章
- 读书笔记2013第13本:《怎样解题》
- provide和inject,Vue父组件直接给孙子组件传值
- jenkins页面中英文切换配置
- 【原创】DevExpress控件GridControl中的布局详解
- (学)DEV在设计界面部分组件显示红叉并报错的问题
- 局部特征(1)——入门篇
- java多线程编程核心技术 pdf_Java多线程编程核心技术之volatile关键字
- 【华为云技术分享】ARM体系结构基础(1)
- I/O多路复用技术是什么?
- Hadoop hive sqoop zookeeper hbase生产环境日志统计应用案例(hadoop篇)
- 《信号与系统学习笔记》—线性反馈系统(二)
- 【手写源码-设计模式17】-迭代器模式-基于客户与商品数据遍历
- C++ 野指针和悬空指针
- 使用Unison 同步文件
- java五子棋的重要算法讲解_[Java五子棋小游戏-Ai算法精讲以及实现]-02--高级算法初步...
- 【数据库】MySQL 加锁处理分析
- 如何用深度学习生成图片(GAN, pix2pix, CycleGAN和pix2pixHD)
- ionic2开发环境 linux,安装ionic开发环境
- Js与Jq实战:第七讲:jQuery基础
- .htaccess是什么?.htaccess几个简单应用
热门文章
- python语言if语句-Python中的if判断语句入门
- python中需要用到的英文词汇-使用python从语料库中提取最常用的单词
- python基础常用语句-Python-基础-常用术语对照表
- 零基础自学python的建议-零基础学python是学2还是3好
- python编码规范手册-PEP8 Python 编码规范整理
- python拼音怎么写-Python 返回汉字的汉语拼音
- python爬取百度图片(用于深度学习中数据集的收集)
- LeetCode Bulb Switcher(约数个数为奇数)
- LeetCode Best Time to Buy and Sell Stock(dp)
- mysql中的G标志实现纵向显示