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库提供的所有算法,包括 ...
最新文章
- JSP 日期处理概述
- centos7 nat模式配置静态ip_Manjaro 配置静态网络IP
- 免费当天澳洲运营商全天下载量达1841TB
- 鸿蒙系统下载 绿色,PGWARE PcMedik
- 双光子荧光成像_有机双光子荧光染料在生物成像中的应用取得新进展
- HSImageSidebarView
- 力扣题目——566. 重塑矩阵
- 步骤条自定义图片_用函数公式查找图片?我可没骗你
- mysql 多表并列查询_Mysql多表查询(两张独立表,一张关系表)
- C语言中断函数c_int00的作用,关于DSP程序中的_c_int00含义
- delphi 连接网口打印机 发送指令打印二维码
- 【026】国务院督查组莅临翼辉信息参观调研
- 介绍两种简单实用的信道编码——CRC校验和汉明码
- 直播平台源代码快速搭建视频直播平台
- 一款酷炫的开源 macOS 屏幕保护程序
- 获取计算机管理员,获取administrator权限的方法步骤-电脑自学网
- 计算机基础知识--->对张海藩老师所著《软件工程》的这本书的一些知识总结
- 《安富莱嵌入式周报》第249期:2022.01.17--2022.01.23
- 学习C++的五十个观点
- 支付宝AR红包引出Python中的PIL小试
热门文章
- python正规教育机构-长沙python培训机构哪家好
- python 装饰器 参数-Python装饰器(4)带参数的装饰器
- python编程自学能学会吗-自学Python会有什么困难?老男孩自学python编程
- python基本使用-Python time库基本使用方法分析
- python入门指南百度云-Python入门指南
- python 类-Python 类属性和类方法
- python创建新文件-python创建和删除文件
- python导入xlsx文件-Python读取xlsx文件的实现方法
- python安装路径怎么找-Python---查看安装路径
- LeetCode N-ary Tree Level Order Traversal(bfs)