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 ...
随机推荐
- shiro异常类型
<!-- 身份认证异常 --> <!-- 身份令牌异常,不支持的身份令牌 --> org.apache.shiro.authc.pam.UnsupportedTokenExce ...
- tomcat启动后过一会就自动关闭
1.打开tomcat 下的log查看关键字眼 常见问题就是端口被占用,被idea 页面启动占用了
- Udp广播的发送和接收(iOS + AsyncUdpSocket)下篇
接上篇C#的Udp广播的发送和接收 http://www.cnblogs.com/JimmyBright/p/4637090.html ios中使用AsyncUdpSocket处理Udp的消息非常方便 ...
- Mybatis笔记八:MyBatis中#{}和${}的区别
先给大家介绍下MyBatis中#{}和${}的区别,具体介绍如下: 1. $将传入的数据直接显示生成在sql中 2. #方式能够很大程度防止sql注入. 3.$方式无法防止Sql注入. 4.$方式一般 ...
- Mybatis笔记三:MyBatis的API文档
mybatis文档:http://www.mybatis.org/mybatis-3/zh/getting-started.html mybatis-spring文档:http://www.mybat ...
- java线程池赏析
1.线程池的顶级接口(Executor) 线程池的顶级接口(jdk > 1.5).仅仅定义了方法execute(Runnable). 该方法接收一个Runnable实例,用来执行一个任务,该任务 ...
- python之旅:函数基础
一.引子 1.函数是什么 用函数与不用函数 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一 ...
- C - Ilya And The Tree Codeforces Round #430 (Div. 2)
http://codeforces.com/contest/842/problem/C 树 dp 一个数的质因数有限,用set存储,去重 #include <cstdio> #includ ...
- 学些goosman-lei的博客感触
在进行程序员职业规划标题搜索的时候,csdn推荐了<专访雷果国:从1.5K到18K 一个程序员的5年成长之路>感触颇深链接:https://www.csdn.net/article/201 ...
- MySQL服务无法启动,错误代码1067
偶然间一次服务器意外重启 重启过后发现MySQL服务停止 手动启动之,发现无法启动 错误代码1067,进程意外终止 遂开始排查问题,首先想到的可能就是my.ini文件出了问题 但是已经忘了写过什么东西 ...