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 ...
随机推荐
- WampServer3.0允许局域网访问配置教程
wamp server 下的Apache默认设置是不允许外网访问和局域网访问的,而直接搜索 wamp局域网访问配置,出现都是一些旧版本的wamp的配置信息,最新版本3.0.X需要使用以下配置方法: 配 ...
- C#基础-代码部署数据库及IIS站点
一.前言 最近忙里偷闲,做了一个部署数据库及IIS网站站点的WPF应用程序工具. 二.内容 此工具的目的是: 根据.sql文件在本机上部署数据库 在本机部署IIS站点,包括 ...
- 【BZOJ2655】Calc(拉格朗日插值,动态规划)
[BZOJ2655]Calc(多项式插值,动态规划) 题面 BZOJ 题解 考虑如何\(dp\) 设\(f[i][j]\)表示选择了\(i\)个数并且值域在\([1,j]\)的答案. \(f[i][j ...
- 【转】每个 Linux 新手都应该知道的 10 个命令
你可能认为你是 Linux 新手,但实际上并不是.全球互联网用户有 3.74 亿,他们都以某种方式使用 Linux,因为 Linux 服务器占据了互联网的 90%.大多数现代路由器运行 Linux 或 ...
- 【IOI 2018】Combo 组合动作(模拟,小技巧)
题目链接 IOI的签到题感觉比NOI的签到题要简单啊,至少NOI同步赛我没有签到成功…… 其实这个题还是挺妙妙的,如果能够从题目出发,利用好限制,应该是可以想到的做法的. 接下来开始讲解具体的做法: ...
- BZOJ1113 [Poi2008]海报PLA 【分治 + 线段树】
题目链接 BZOJ1113 题解 显然只与高有关,每次选择所有海报中最低的覆盖所有海报,然后分治两边 每个位置会被调用一次,复杂度\(O(nlogn)\) \(upd:\)智障了,,是一道\(O(n) ...
- 解题:CQOI 2013 和谐矩阵
题面 踩踩时间复杂度不正确的高斯消元 首先可以发现第一行确定后就可以确定整个矩阵,所以可以枚举第一行的所有状态然后$O(n)$递推检查是否合法 $O(n)$递推的方法是这样的:设$pre$为上一行,$ ...
- ABTest灰度发布
ABtest一个总的目的和意图是,判断哪种种UI或rerank策略更优,通过事实的依据( CTR或下单率)判断哪种策略更符合用户的习惯和需求. 我们经常会面临多个设计方案的选择,比如app或pc端某个 ...
- Centos6.6下安装nginx1.6.3
安装环境: [root@nginx ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@nginx ~]# uname -r 2. ...
- 科学计算三维可视化---TVTK入门(创建和显示三维对象)
一:创建一个基本的三维对象 (一)长方体操作 traits:就是TVTK对象的属性 (1)对象属性操作 >>> from tvtk.api import tvtk >>& ...