Python内置模块之-hashlib
一 、概述
摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
摘要算法的特点
- 不论data大小,摘要结果是固定长度
- 单向函数,计算data的摘要可以,但不可以通过摘要反推data
- 摘要算法不是加密算法,不能用以加密,因为不能反推是单向函数,主要用于防篡改
主要用途
- 密码密文存储
- 文件一致性验证
import hashlib
md5 = hashlib.md5() # 拿到md5对象
md5.update(bytes('',encoding='utf-8')) # 注意是bytes类型,且注明编码
ret =md5.hexdigest() # 获得md5值
print(ret)
二、用法
- 使用update更新散列对象时,需要先将字符串转换为bytes类型,注意编码
- 使用update的时候可以多次update,结果跟一次性得到的摘要是相同的
- 加盐可以增加安全性,防撞库
对某个字符串一次性进行md5摘要
name = 'wangys' # 待摘要的字符串
md5 = hashlib.md5() # 通过md5方法拿到一个对象
md5.update(bytes(name,encoding='utf-8')) # 使用update对象
ret = md5.hexdigest() # 使用hexdigest得到摘要值
print(ret)
# ec220befabb67c9052cf4608bb5752f8
对某个字符串多次进行摘要
# 得到的摘要结果一样
name = 'wangys'
md5 = hashlib.md5()
md5.update(bytes(name[:2],encoding='utf-8'))
md5.update(bytes(name[2:],encoding='utf-8'))
ret = md5.hexdigest()
print(ret)
# ec220befabb67c9052cf4608bb5752f8
进行摘要的时候加盐
import hashlib
name = 'wangys'
md5 = hashlib.md5(bytes('haha',encoding='utf-8')) # 盐为 haha
md5.update(bytes(name,encoding='utf-8'))
print(md5.hexdigest())
Python内置模块之-hashlib的更多相关文章
- python 内置模块之hashlib、hmac、uuid
一.hashlib md5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的.但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性. sha算法比MD5 ...
- md5模块(Python内置模块)和hashlib模块
转自https://my.oschina.net/duhaizhang/blog/67214 MD5模块用于产生消息摘要,康用来判断文件是否相同. python的md5模块使用非常简单,包括以下几个函 ...
- Python学习笔记【第八篇】:Python内置模块
什么时模块 Python中的模块其实就是XXX.py 文件 模块分类 Python内置模块(标准库) 自定义模块 第三方模块 使用方法 import 模块名 form 模块名 import 方法名 说 ...
- python内置模块[sys,os,os.path,stat]
python内置模块[sys,os,os.path,stat] 内置模块是python自带功能,在使用内置模块时,需要遵循 先导入在 使用 一.sys 对象 描述 sys.argv 命令行参数获取,返 ...
- python 内置模块续(二)
目录 python 内置模块补充 1.hashlib模块 简易使用: 高级使用: 进阶使用: 加盐处理: 校验文件一致性 2.logging日志模块 日志等级 常用处理 "四大天王" ...
- python内置模块(4)
这一部分是python内置模块系列的最后一部分,介绍了一些小巧有用的内置模块. 目录: 1.random 2.shelve 3.getpass 4.zipfile 5.tarfile 6.bisect ...
- Python内置模块与标准库
Python内置模块就是标准库(模块)吗?或者说Python的自带string模块是内置模块吗? 答案是:string不是内置模块,它是标准库.也就是说Python内置模块和标准库并不是同一种东西. ...
- python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等) #http://www.c ...
- python 模块之hashlib
Hashlib模块 Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据,其他的所有加密算法使用方式上基本类似. h ...
随机推荐
- 怎么使Richedit中光标始终指到最后一行的最后面?
Richedit中数据会不断增加.要始终能看到当前的数据.该怎么做? SendMessage(Memo->Handle, WM_VSCROLL, SB_BOTTOM, 0); SendMessa ...
- mybatis 中的 update 返回值你真的明白吗
记录源地址:https://www.jianshu.com/p/80270b93082a
- Linux 学习 (七) 挂载命令 & 用户登陆查看
Linux达人养成计划 I 学习笔记 挂载命令 mount:查询系统中已经挂载的设备 mount -a:根据配置文件 /etc/fstab 的内容,自动挂载 mount [-t 文件系统] [-o 特 ...
- 解决mysql中文乱码问题 在url后面添加?characterEncoding=utf8
- Vuex、axios、跨域请求处理和import/export的注意问题
一.Vuex 1.介绍 vuex是一个专门为Vue.js设计的集中式状态管理架构. 对于状态,我们把它理解为在data中需要共享给其他组件使用的部分数据. Vuex和单纯的全局对象有以下不同: 1. ...
- poj 1015 Jury Compromise(背包变形dp)
In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of ...
- BSGS与扩展BSGS
BSGS \(BSGS\)算法又称大步小步\((Baby-Step-Giant-Step)\)算法 \(BSGS\)算法主要用于解以下同余方程 \[A^x\equiv B(mod\ p)\]其中\(( ...
- mysql加速导入数据的简单设置
mysql加速导入数据的简单设置 # 修改前查询参数值 show variables like 'foreign_key_checks'; show variables like 'unique_ch ...
- 第四届CCCC团体程序设计天梯赛 后记
一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...
- 2017-12-19python全栈9期第四天第二节之列表的增删查改之公共方法len和count和index
#!/user/bin/python# -*- coding:utf-8 -*-li = ['zs','ls','ww','zl','xx']l = len(li) #总数print(l)num = ...