Python中的哈希算法模块hashlib详解

 更新时间:2023年08月11日 09:50:22   作者:微小冷  
这篇文章主要介绍了Python中的哈希算法模块hashlib详解,hashlib模块实现了多种哈希算法,包括MD5以及SHA家族的算法,通过algorithms_guaranteed可以查看hashlib中封装的所有算法,需要的朋友可以参考下

hashlib模块

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'}

整理如下

构造器算法
md5md5
sha家族sha1, sha224, sha256, sha384, sha512
sha3家族sha3_224, sha3_256, sha3_384, sha3_512,
BLAKE2blake2b, blake2s
shakeshake_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中的hashlib模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用win32 COM实现Excel的写入与保存功能示例

    Python使用win32 COM实现Excel的写入与保存功能示例

    这篇文章主要介绍了Python使用win32 COM实现Excel的写入与保存功能,结合实例形式分析了Python调用win32 COM组件针对Excel文件的读写与保存相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • pycharm 安装JPype的教程

    pycharm 安装JPype的教程

    这篇文章主要介绍了pycharm 安装JPype的步骤,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • python3操作注册表的方法(Url protocol)

    python3操作注册表的方法(Url protocol)

    使用python操作注册表的方法最近学习了一下,现在做一下笔记,由于对Python语言的使用还不是很熟练,所以写不出高大上的结构
    2020-02-02
  • SVM基本概念及Python实现代码

    SVM基本概念及Python实现代码

    这篇文章主要为大家详细介绍了SVM基本概念及Python实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • python如何通过闭包实现计算器的功能

    python如何通过闭包实现计算器的功能

    这篇文章主要介绍了python如何通过闭包实现计算器的功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python应用利器之缓存机制的妙用详解

    Python应用利器之缓存机制的妙用详解

    在 Python 应用程序中,使用缓存能够显著提高性能并降低资源消耗,本文将详细介绍如何在 Python 中实现缓存机制,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • python中用ggplot绘制画图实例讲解

    python中用ggplot绘制画图实例讲解

    在本篇文章里小编给大家整理的是一篇关于python中用ggplot绘制画图实例讲解内容,有兴趣的朋友们可以学习参考下。
    2021-01-01
  • 跟老齐学Python之深入变量和引用对象

    跟老齐学Python之深入变量和引用对象

    本讲再次提及变量和引用对象,就是要让看官对变量和赋值有一个知其然和知其所以然的认识。当然,最后能不能达到此目的,主要看我是不是说的通俗易懂了。如果您没有明白,就说明我说的还不够好,可以联系我,我再为您效劳。
    2014-09-09
  • python如何将两个数据表中的对应数据相加

    python如何将两个数据表中的对应数据相加

    这篇文章主要介绍了python如何将两个数据表中的对应数据相加问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python及Django框架生成二维码的方法分析

    Python及Django框架生成二维码的方法分析

    这篇文章主要介绍了Python及Django框架生成二维码的方法,结合实例形式分析了Python及Django框架使用qrcode包实现二维码生成功能的相关操作技巧,需要的朋友可以参考下
    2018-01-01

最新评论