Python hashlib 模块

简介: Python hashlib 模块

Python hashlib 模块主要用于进行哈希(hash)操作。

哈希(Hash)是一种将任意长度的输入数据映射为固定长度输出数据的算法。

哈希通常用于验证数据的完整性、安全存储密码等场景。

哈希函数的输出通常是一串看似随机的字母和数字。

hashlib 模块提供了常见的哈希算法的实现,如 MD5、SHA-1、SHA-256 等。

要使用 hashlib 函数必须先导入:

import hashlib

查看 hashlib 模块中的内容:

实例

>>> import hashlib

>>> dir(hashlib)

['__all__', '__block_openssl_constructor', '__builtin_constructor_cache', '__builtins__', '__cached__', '__doc__', '__file__', '__get_builtin_constructor', '__loader__', '__name__', '__package__', '__spec__', '_hashlib', 'algorithms_available', 'algorithms_guaranteed', 'blake2b', 'blake2s', 'md5', 'new', 'pbkdf2_hmac', 'scrypt', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256']

以下是 hashlib 模块的一些常用方法和哈希算法的简介:

常用方法

hashlib.new(name, data=None): 创建一个哈希对象。

name 参数是哈希算法的名称,data 参数是要被哈希的数据。

实例

import hashlib


sha256_hash = hashlib.new('sha256')

sha256_hash.update(b'RUNOOB')

print(sha256_hash.hexdigest())

输出结果为:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

hashlib.md5() / hashlib.sha1() / hashlib.sha256() / ...: 直接使用特定的哈希算法创建哈希对象。

实例

import hashlib


md5_hash = hashlib.md5(b'RUNOOB')

print(md5_hash.hexdigest())

输出结果为:

18fa661e2a4a7dd6471cc1407290cf6e

哈希对象方法

update(data): 更新哈希对象的消息内容。

实例

import hashlib


sha256_hash = hashlib.sha256()

sha256_hash.update(b'Hello, ')

sha256_hash.update(b'Runoob!')

print(sha256_hash.hexdigest())

输出结果为:

1b56561022276e9a5a8e1cda72e1b39fca6f6074326a74d39f6dfd9540c8ecd7

hexdigest(): 获取十六进制表示的哈希值。

实例

import hashlib


md5_hash = hashlib.md5(b'RUNOOB')

print(md5_hash.hexdigest())

输出结果为:

18fa661e2a4a7dd6471cc1407290cf6e

digest(): 获取二进制表示的哈希值。

实例

import hashlib


sha1_hash = hashlib.sha1(b'RUNOOB')

print(sha1_hash.digest())

输出结果为:

b'4\x17\t\xd0\xdb\xc2f3/\x1c\xbc\xd8\xc2_\xd4\xa0T\x12\xb7\xd4'

常见哈希算法

MD5

实例

import hashlib


md5_hash = hashlib.md5(b'RUNOOB')

print(md5_hash.hexdigest())

输出结果为:

18fa661e2a4a7dd6471cc1407290cf6e

SHA-1

实例

import hashlib


sha1_hash = hashlib.sha1(b'RUNOOB')

print(sha1_hash.hexdigest())

输出结果为:

341709d0dbc266332f1cbcd8c25fd4a05412b7d4

SHA-256

实例

import hashlib


sha256_hash = hashlib.sha256(b'RUNOOB')

print(sha256_hash.hexdigest())

输出结果为:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

SHA-512

实例

import hashlib


sha512_hash = hashlib.sha512(b'RUNOOB')

print(sha512_hash.hexdigest())

输出结果为:

7cfe50493eebd48ee7330c797459c2d0d5ca943bd1c84ad7a0b6783b11cd49d06b4a1dc84ee9ea5e20d0bfedbdb67e716500a20e5870abecea3f32dc8484a811

在实际应用中,选择合适的哈希算法取决于具体的需求。需要注意的是,MD5 和 SHA-1 已经被认为不安全,特别是在安全领域,推荐使用更强大的算法,如 SHA-256 或 SHA-512。

Python hashlib 模块中常见的哈希算法及其含义:

算法名称 摘要长度(位) 输出长度(字节) 安全性 用途
md5 128 16 不安全 数据完整性验证、密码存储等
sha1 160 20 不安全 数据完整性验证、密码存储等
sha224 224 28 数据完整性验证、数字签名等
sha256 256 32 中等 数据完整性验证、数字签名等
sha384 384 48 数字签名、加密算法等
sha512 512 64 数字签名、加密算法等
sha3_224 224 28 未来标准的 SHA-3 家族成员,适用于数字签名等
sha3_256 256 32 未来标准的 SHA-3 家族成员,适用于数字签名等
sha3_384 384 48 未来标准的 SHA-3 家族成员,适用于数字签名等
sha3_512 512 64 未来标准的 SHA-3 家族成员,适用于数字签名等
shake_128 可变 可变 SHAKE 系列是 SHA-3 家族的可变长度版本,适用于各种应用
shake_256 可变 可变 SHAKE 系列是 SHA-3 家族的可变长度版本,适用于各种应用

说明:

  • 摘要长度(位): 表示哈希算法输出的摘要长度,以位为单位。
  • 输出长度(字节): 表示哈希算法输出的摘要长度,以字节为单位。
  • 安全性: 表示哈希算法的安全性级别,包括 "不安全"、"低"、"中等"、"高"。这是一个一般性的分类,具体的安全性还要考虑算法的用途和具体的攻击场景。
相关文章
|
3天前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
13天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
34 5
|
23天前
|
Java 程序员 开发者
Python的gc模块
Python的gc模块
|
26天前
|
数据采集 Web App开发 JavaScript
python-selenium模块详解!!!
Selenium 是一个强大的自动化测试工具,支持 Python 调用浏览器进行网页抓取。本文介绍了 Selenium 的安装、基本使用、元素定位、高级操作等内容。主要内容包括:发送请求、加载网页、元素定位、处理 Cookie、无头浏览器设置、页面等待、窗口和 iframe 切换等。通过示例代码帮助读者快速掌握 Selenium 的核心功能。
78 5
|
30天前
|
Python
SciPy 教程 之 SciPy 模块列表 6
SciPy教程之常量模块介绍:涵盖公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率及力学单位。示例展示了角度单位转换为弧度的几个常用常量。
20 7
|
30天前
|
Python
SciPy 教程 之 SciPy 模块列表 7
`scipy.constants` 模块提供了常用的时间单位转换为秒数的功能。例如,`constants.hour` 返回 3600.0 秒,表示一小时的秒数。其他常用时间单位包括分钟、天、周、年和儒略年。
18 6
|
27天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy教程之SciPy模块列表13:单位类型。常量模块包含多种单位,如公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了如何使用`constants`模块获取零摄氏度对应的开尔文值(273.15)和华氏度与摄氏度的转换系数(0.5556)。
18 1
|
28天前
|
XML 前端开发 数据格式
超级详细的python中bs4模块详解
Beautiful Soup 是一个用于从网页中抓取数据的 Python 库,提供了简单易用的函数来处理导航、搜索和修改分析树。支持多种解析器,如 Python 标准库中的 HTML 解析器和更强大的 lxml 解析器。通过简单的代码即可实现复杂的数据抓取任务。本文介绍了 Beautiful Soup 的安装、基本使用、对象类型、文档树遍历和搜索方法,以及 CSS 选择器的使用。
66 1
|
29天前
|
Python
SciPy 教程 之 SciPy 模块列表 9
SciPy教程之常量模块介绍,涵盖多种单位类型,如公制、质量、角度、时间、长度、压强等。示例展示了如何使用`scipy.constants`模块查询不同压强单位对应的帕斯卡值,包括atm、bar、torr、mmHg和psi。
15 1
|
29天前
|
Python
SciPy 教程 之 SciPy 模块列表 8
SciPy教程之常量模块单位类型介绍。该模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例展示了部分长度单位的转换值,例如英寸、英尺、海里等。
16 1
下一篇
无影云桌面