Python哈希算法模块hashlib
文章目录
- 初步
- 封装算法简介
- new函数
初步
hashlib
模块实现了多种哈希算法,包括MD5以及SHA家族的算法,通过algorithms_guaranteed
可以查看hashlib
中封装的所有算法
>>> from pprint import pprint
>>> pprint(hashlib.algorithms_guaranteed)
{'blake2b','blake2s','md5','sha1','sha224','sha256','sha384','sha3_224','sha3_256','sha3_384','sha3_512','sha512','shake_128','shake_256'}
整理如下
构造器 | |
---|---|
md5 |
md5
|
sha家族 |
sha1 , sha224 , sha256 , sha384 , sha512
|
sha3家族 |
sha3_224 , sha3_256 , sha3_384 , sha3_512 ,
|
BLAKE2 |
blake2b , blake2s
|
shake |
shake_128 , shake_256
|
这些哈希算法拥有相同的外部接口,以md5
为例,调用方式大致为
import hashlib
x = hashlib.md5()
x.update(b"tinycool")
x.hexdigest()
# '90cba0172a608c7d3784ba159e6a9ef1'
x.digest()
# b'\x90\xcb\xa0\x17*`\x8c}7\x84\xba\x15\x9ej\x9e\xf1'
其中,update
表示以二进制字符串作为密钥进行哈希,digest
和hexdigest
分别表示将生成的哈希码通过二进制和十六进制的形式表现出来。
封装算法简介
md5
算法,MD即信息摘要(Message-Digest),md5
可以理解为第五代信息摘要算法,于1992年公开,用以取代md4
,但在2004年已经被证实无法防止碰撞,从而不适用于安全性认证,但目前来说还是有人在用。
相比之下,SHA,即安全散列算法(Secure Hash Algorithm),是美国政府的加密标准,相对来说更加安全。其中sha1
生成160bit
长度的信息摘要,其他SHA函数,以sha224
为例,224表示产生的信息摘要长度为224bit
,以此类推。
blake2b
和blake2s
分别针对64位操作系统和32位操作系统进行优化,以生成最长64位和最长32位的位数可变的信息摘要。
shake_128
和shake_256
可生成位数可变的信息摘要,二者的最大位数分别是128和256位。
new函数
通过new
函数,可以更加统一地生成哈希对象,例如
x = hashlib.new('sha256')
x.update(b"tinycool")
x.hexdigest()
# '96d424d9d77972f28b5a11e8c2bddd67542e7784e01b7dcca51154babb2b54ea'
即hashlib.new('xxx')
和hashlib.xxx()
是相同的,当然xxx
得是haslib
中封装好的哈希函数。
接下来演示一下shake_128
函数
x = hashlib.new('shake_128')
x.update(b"tinycool")
x.hexdigest(15)
# '8f8f153833e5159d548f4371af9855'
x.hexdigest(25)
# '8f8f153833e5159d548f4371af9855e0affc9ddae8d6c98bee'
可见,在hexdigest
中输入不同的长度,返回了不同长度的十六进制字符串。
通过new
创建的哈希对象,有三个可调用的属性
digest_size
哈希对象的字节数。block_size
哈希算法内部块的字节数。name
哈希算法名字
Python哈希算法模块hashlib相关推荐
- Python之网络爬虫(selenium爬取动态网页、爬虫案例分析、哈希算法与RSA加密)
文章目录 一.selenium爬取动态网页 二.爬虫案例分析 三.哈希hash算法与RSA加密 一.selenium爬取动态网页 1.动态网页认知 爬虫其实就是在模仿浏览器的行为 应对要多次数据的交互 ...
- python hashlib 哈希算法
写在篇前 哈希加密算法应用非常广泛,包括数字签名,身份验证,操作检测,指纹,校验和(消息完整性检查),哈希表,密码存储等.在密码学中,好的哈希算法应该满足以下两个条件:一是无法从哈希值解密原始消息 ...
- 每周一个 Python 模块 | hashlib
专栏地址:每周一个 Python 模块 hashlib 模块定义了用于访问不同加密散列算法的 API.要使用特定的哈希算法,需要先用适当的构造函数或new()创建哈希对象.然后,无论使用何种算法,对象 ...
- Python模块——HashLib(摘要算法)与base64
摘要算法(hashlib) Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...
- python查重算法_用Python实现通过哈希算法检测图片重复的教程
Iconfinder 是一个图标搜索引擎,为设计师.开发者和其他创意工作者提供精美图标,目前托管超过 34 万枚图标,是全球最大的付费图标库.用户也可以在 Iconfinder 的交易板块上传出售原创 ...
- python图像检测_用Python实现通过哈希算法检测图片重复的教程
Iconfinder 是一个图标搜索引擎,为设计师.开发者和其他创意工作者提供精美图标,目前托管超过 34 万枚图标,是全球最大的付费图标库.用户也可以在 Iconfinder 的交易板块上传出售原创 ...
- python检测图片相同部分_用 Python 实现哈希算法检测重复图片
在 Python 中导入 hashlib 模块,调用函数就可以生成某一个字符串或者文件的哈希值.这个算法对于未被篡改的上传文件非常有效,如果输入数据有细微变化,加密哈希算法都会导致雪崩效应,从而造成新 ...
- 哈希运算python实现_一致性哈希算法 python实现
# -*- coding: utf-8 -*- """ 一致性哈希算法 python实现 参考 http://weblogs.java.net/blog/2007/11/ ...
- 相似图片检测:感知哈希算法之aHash,dHash,pHash的Python实现
相似图片检测:感知哈希算法之aHash,dHash,pHash的Python实现 原文:http://blog.sina.com.cn/s/blog_56fd58ab0102xpqf.html 感知哈 ...
最新文章
- JSP_运维_JSP项目部署到server(适合0经验新手)
- stable_sort
- SQLServer之删除存储过程
- JQUERY的parent()
- 797. 所有可能的路径
- 价值358的emlog定制模板lu1.3
- java 栈_Java实现单链表、栈、队列三种数据结构
- Mybatis学习笔记-一级缓存与二级缓存
- Atitit ForkJoinTask的使用以及与futuretask的区别 1.1. Forkjoin原理图	1 1.2. Fork/Join使用两个类完成以上两件事情:ForkJoinTask
- paip.提升安全性---登录密码出错次数检测
- 数字IC设计系列----安装配置虚拟机、安装centos系统
- linux安装桌面键盘,如何在 Linux 中使用屏幕键盘
- 关于window10系统找不到Realtek高清晰音频管理器解决方法
- 展现量、点击量、点击率;访客数、访问次数、浏览量的区别与作用
- mysql产品分类_MySQL习题1 一对多实例 产品和分类
- Ant Design Pro 企业级后台实战(73 个视频)
- MATLAB符号表达式运算
- Python不掉包实现矩阵分解及行列式转换,求秩等操作并使用QT可视化
- 当黑夜自此笼罩-白夜行之感想一二
- staticmethod静态方法有什么作用(含例子运用)