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 ...
随机推荐
- H5的段落标签、图片标签、列表标签与链接标签
段落标签 (1)<p>段落标签</p> (2)<nobr>强制不换行标签,会出现滚动条</nobr> (3)<pre>保留原始排版标签< ...
- Siamese network 孪生神经网络
Siamese network 孪生神经网络 https://zhuanlan.zhihu.com/p/35040994 https://blog.csdn.net/shenziheng1/artic ...
- jsp篇 之 jsp中的注释
Jsp中的注释: 第一种: <!-- html/xml中的注释方式 --> 特点: 1.用户在浏览器中右键查看源代码 [能] 看到这个注释. 2.在服务器端,这个jsp页面被翻译成的jav ...
- pymongo 使用方法(增删改查)
#!/usr/bin/env python # -*- coding:utf-8 -*- """ MongoDB存储 在这里我们来看一下Python3下MongoDB的存 ...
- deepin安装mysql记录
本文转载自http://www.linuxidc.com/Linux/2016-07/133128.htm sudo apt-get install mysql-server apt-get isnt ...
- vegas 为盖斯
vegas 为盖斯 S键 分割素材U键 分开视频和音频I键渲染开始O渲染结束 默认布局 为盖斯新建项目的参数 剪好后渲染 插入字幕
- PowerDesigner生成pdm(适用Mysql)
废话不多说,直接开始: 1.首先安装所需要的驱动以及应用程序 ①和② 是 Mysql数据库连接驱动 ,根据PowerDesigner的位数来选择下载 下载地址:https://dev.mysql.co ...
- 图解Tomcat类加载机制(阿里面试题)
Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给 ...
- JN_0004:轻松解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码
百度访问统计代码JavaScript源码:红色加粗部分将是要修改的地方.eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"&qu ...
- python3 udp版简单的聊天器
单任务的聊天系统. 获取键盘数据,并将其发送给对方 接收数据并显示 并且功能数据进行选择以上的2个功能调用 代码实现 import socket def send_msg(udp_socket): & ...