文章目录

  • 初步
  • 封装算法简介
  • 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表示以二进制字符串作为密钥进行哈希,digesthexdigest分别表示将生成的哈希码通过二进制和十六进制的形式表现出来。

封装算法简介

md5算法,MD即信息摘要(Message-Digest),md5可以理解为第五代信息摘要算法,于1992年公开,用以取代md4,但在2004年已经被证实无法防止碰撞,从而不适用于安全性认证,但目前来说还是有人在用。

相比之下,SHA,即安全散列算法(Secure Hash Algorithm),是美国政府的加密标准,相对来说更加安全。其中sha1生成160bit长度的信息摘要,其他SHA函数,以sha224为例,224表示产生的信息摘要长度为224bit,以此类推。

blake2bblake2s分别针对64位操作系统和32位操作系统进行优化,以生成最长64位和最长32位的位数可变的信息摘要。

shake_128shake_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相关推荐

  1. Python之网络爬虫(selenium爬取动态网页、爬虫案例分析、哈希算法与RSA加密)

    文章目录 一.selenium爬取动态网页 二.爬虫案例分析 三.哈希hash算法与RSA加密 一.selenium爬取动态网页 1.动态网页认知 爬虫其实就是在模仿浏览器的行为 应对要多次数据的交互 ...

  2. python hashlib 哈希算法

    写在篇前 ​ 哈希加密算法应用非常广泛,包括数字签名,身份验证,操作检测,指纹,校验和(消息完整性检查),哈希表,密码存储等.在密码学中,好的哈希算法应该满足以下两个条件:一是无法从哈希值解密原始消息 ...

  3. 每周一个 Python 模块 | hashlib

    专栏地址:每周一个 Python 模块 hashlib 模块定义了用于访问不同加密散列算法的 API.要使用特定的哈希算法,需要先用适当的构造函数或new()创建哈希对象.然后,无论使用何种算法,对象 ...

  4. Python模块——HashLib(摘要算法)与base64

    摘要算法(hashlib) Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...

  5. python查重算法_用Python实现通过哈希算法检测图片重复的教程

    Iconfinder 是一个图标搜索引擎,为设计师.开发者和其他创意工作者提供精美图标,目前托管超过 34 万枚图标,是全球最大的付费图标库.用户也可以在 Iconfinder 的交易板块上传出售原创 ...

  6. python图像检测_用Python实现通过哈希算法检测图片重复的教程

    Iconfinder 是一个图标搜索引擎,为设计师.开发者和其他创意工作者提供精美图标,目前托管超过 34 万枚图标,是全球最大的付费图标库.用户也可以在 Iconfinder 的交易板块上传出售原创 ...

  7. python检测图片相同部分_用 Python 实现哈希算法检测重复图片

    在 Python 中导入 hashlib 模块,调用函数就可以生成某一个字符串或者文件的哈希值.这个算法对于未被篡改的上传文件非常有效,如果输入数据有细微变化,加密哈希算法都会导致雪崩效应,从而造成新 ...

  8. 哈希运算python实现_一致性哈希算法 python实现

    # -*- coding: utf-8 -*- """ 一致性哈希算法 python实现 参考 http://weblogs.java.net/blog/2007/11/ ...

  9. 相似图片检测:感知哈希算法之aHash,dHash,pHash的Python实现

    相似图片检测:感知哈希算法之aHash,dHash,pHash的Python实现 原文:http://blog.sina.com.cn/s/blog_56fd58ab0102xpqf.html 感知哈 ...

最新文章

  1. JSP_运维_JSP项目部署到server(适合0经验新手)
  2. stable_sort
  3. SQLServer之删除存储过程
  4. JQUERY的parent()
  5. 797. 所有可能的路径
  6. 价值358的emlog定制模板lu1.3
  7. java 栈_Java实现单链表、栈、队列三种数据结构
  8. Mybatis学习笔记-一级缓存与二级缓存
  9. Atitit ForkJoinTask的使用以及与futuretask的区别 1.1. Forkjoin原理图 1 1.2. Fork/Join使用两个类完成以上两件事情:ForkJoinTask
  10. paip.提升安全性---登录密码出错次数检测
  11. 数字IC设计系列----安装配置虚拟机、安装centos系统
  12. linux安装桌面键盘,如何在 Linux 中使用屏幕键盘
  13. 关于window10系统找不到Realtek高清晰音频管理器解决方法
  14. 展现量、点击量、点击率;访客数、访问次数、浏览量的区别与作用
  15. mysql产品分类_MySQL习题1 一对多实例 产品和分类
  16. Ant Design Pro 企业级后台实战(73 个视频)
  17. MATLAB符号表达式运算
  18. Python不掉包实现矩阵分解及行列式转换,求秩等操作并使用QT可视化
  19. 当黑夜自此笼罩-白夜行之感想一二
  20. staticmethod静态方法有什么作用(含例子运用)

热门文章

  1. 论投资六字心经——买预期,卖事实
  2. Spark RDD与DataFrame相互转换
  3. 最近写了个新游戏,欢迎大家试玩
  4. 科技云报道:巨头下场,生态聚合,低代码不再是个伪命题
  5. 苹果自带的邮件删除邮件服务器,如何从iPhone和iPad删除电子邮件帐户 | MOS86
  6. 基于Docker、Jenkins实现自动化部署
  7. 5月31日服务器维护更新公告,绝地求生5月31日更新内容
  8. C# 处理 excel 合并计算
  9. 华为战略规划落地的核心:VDBD(价值驱动业务设计模型)
  10. Maven构建多模块web项目(IDEA)