python hash()和hashlib
一、哈希算法
哈希算法:哈希算法并不是特定的算法而是一类算法的统称,只要是完成这种功能的算法都是哈希算法,哈希算法也叫做散列算法。同时这个过程是不可逆的,无法由key推导出data。判断一个哈希算法是否优秀,要根据算法的离散度和冲突概率来评定。
哈希函数:就是你给我一个值,我就能通过这个函数计算出它的存储地址。然后取出对应的值,不需要遍历查找,只要计算出地址,需要查询的值就找到了。
哈希表:又称散列表,其定义是根据一个哈希函数将集合S中的关键字映射到一个表中,这个表就称为哈希表,而这种方法就称为Hashing。
二、hashlib
2.1什么是摘要算法
摘要算法:不需要密钥,并且加密后无法破解,只有输入相同的明文,采用相同的摘要算法,才能得到相同的密文。无论明文有多长,经过摘要算法加密后密文的长度是固定的。
1.加密后不可逆 2..无法破解 3.相同的摘要算法和明文,得到的密文永远相同
hashlib模块实现了一个通用的接口来实现多个不同的安全哈希和消息摘要算法,包括FIPS安全散列算法SHA1,SHA224,SHA256,SHA384和SHA512(在FIPS 180-2中定义)以及RSA的MD5算法(在因特网中术语“安全散列”和“消息摘要”是可互换的。较旧的算法被称为消息摘要。现代术语是安全哈希。
每种类型的哈希都具有一个命名构造函数。它们都返回一个具有相同的简单接口的哈希对象。例如:使用sha1()
创建SHA1哈希对象。现在,你可以使用update()
方法以类字节对象填充这个对象(通常为字节)。在连接数据的任何时候,你都可以使用digest()
或hexdigest()
方法来向它请求摘要。
此模块中始终存在的散列算法的构造函数为md5()
,sha1()
,sha224()
,sha256()
,sha384()
和sha512()
。可能还有其它算法,这取决于在你的平台上Python 使用的 OpenSSL 库。
2.2摘要算法的作用
1.下载文件时,一些文件校验值,判断文件是否一致。
2.用于分布式网络上使用,保证多台服务器的文件一致。
2.2摘要算法示例
获取b'HelloWorld'的消息摘要
- import hashlib
- #1.得到MD5对象
- md5_obj = hashlib.md5()
- #update(arg) 将arg变为哈希对象
- md5_obj.update(b'HelloWold')
- #返回哈希结果的大小。以字节为单位
- print(md5_obj.digest_size)
- #返回传递给update()方法数据的摘要
- print(md5_obj.digest())
- #摘要以2倍长度的字符串对象返回,生成一个只包含十六进制数字 字符串
- print(md5_obj.hexdigest())#e22973461674c5b0f771b9ea4f6c6222
md5.update():多次调用等效于具有多个参数串联的单个调用。
- import hashlib
- md5_obj = hashlib.md5()
- #多次调用update()等效于 具有多个参数串联的单个调用
- md5_obj.update(b'Hello')
- md5_obj.update(b'World')
- print(md5_obj.hexdigest()) #68e109f0f40ca72a15e05cc22786f8e6
- md5_obj1 = hashlib.md5()
- md5_obj1.update(b'HelloWorld')
- print(md5_obj1.hexdigest()) #68e109f0f40ca72a15e05cc22786f8e6
python hash()和hashlib的更多相关文章
- python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等) #http://www.c ...
- 笔记-算法-hash以及hashlib使用
算法-hash和hash表以及hashlib使用 1. 简介 1.1. hash Hash(散列/哈希),就是把任意长度的输入(预映射pre-image)通过散列算法变换成固定长度的输 ...
- Python hash() 函数
Python hash() 函数 Python 内置函数 描述 hash() 用于获取取一个对象(字符串或者数值等)的哈希值. 语法 hash 语法: hash(object) 参数说明: obje ...
- python 模块之hashlib
Hashlib模块 Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据,其他的所有加密算法使用方式上基本类似. h ...
- hash模块 hashlib 和hmac
hashlib模块 用于加密相关的操作,代替md5模块和sha模块,主要提供SHA1,SHA224,SSHA256,SHA384,SHA512,MD5算法 直接看代码案例: ---------md5- ...
- python 内置模块之hashlib、hmac、uuid
一.hashlib md5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的.但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性. sha算法比MD5 ...
- python模块学习 hashlib
一.hashlib概述 涉及加密服务:14. Cryptographic Services 其中 hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法借口,如SHA1.SHA224.SHA2 ...
- python标准库]Hashlib
hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法. 在学习hashlib模块之前,先来看 ...
- 【Python】使用hashlib进行MD5和sha1摘要计算
代码: import hashlib hash = hashlib.md5() hash.update('http://www.cnblogs.com/xiandedanteng'.encode('u ...
随机推荐
- [BZOJ2502]清理雪道 有上下界网络流(最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场 ...
- 【刷题】BZOJ 5415 [Noi2018]归程
www.lydsy.com/JudgeOnline/upload/noi2018day1.pdf Solution 考试的时候打的可持久化并查集,没调出来QAQ 后面知道了kruskal重构树这个东西 ...
- spring管理hibernate,mybatis,一级缓存失效原因
mybatis缓存:一级缓存和二级缓存 hibernate缓存:一级缓存和二级缓存 关于缓存: 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器, 其作用是为了减少应 ...
- 解决“mongoengine.fields.ImproperlyConfigured: PIL library was not found”报错
解决方案: pip install Pillow
- c动态分配结构体二维数组
这个问题我纠结了蛮久了,因为前面一直忙(自己也懒了点),所以没有能好好研究这个.希望这篇文章能够帮助你们. #include <stdio.h> #include <stdlib.h ...
- 五、Linux学习之文件搜索命令
一.文件搜索命令locate locate 文件名 在后台数据库中按文件名搜索,搜索速度最快 /var/lib/mlocate #locate命令所搜索的后台数据库(数据库不会实时刷新,所以新建的文件 ...
- docker:轻量级图形页面管理之Portainer
docker:轻量级图形页面管理之Portainer 原创甘兵2018-03-05 14:26:56评论(8)2586人阅读 1.介绍 docker 图形化管理提供了很多工具,有Portainer ...
- JavaScript--Dom直接选择器
一.简介 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示 ...
- 初等数论及其应用——Lucas定理
Lucas定理用于解决较大组合数的取模问题,下面的理论整理源自冯志刚的<初等数论>,其与百度百科上呈现的Lucas定理形式上不同,但是容易看到二者的转化形式. 首先我们来整理一下冯志刚的& ...
- Docker查看映射卷报错
问题描述: 当查看Docker容器的映射卷时出现报错信息,如下: [root@kazihuo ~]# docker inspect -f {{.Volumes}} volume #volume指容 ...