PYTHON帮助

hashlib Python(运作原理:开发人员指南)

Python 中的hashlib 模块是处理安全哈希和消息摘要算法的强大工具。 该模块提供了多种安全散列算法的标准接口,是需要确保数据完整性和安全性的开发人员的多功能选择。 在文章的后面,我们还将研究一个来自IronSoftware的多功能PDF生成库,名为IronPDF,并编写一个使用这两个库的脚本来演示它们的用法。

介绍

hashlib 模块是 Python 标准库的一部分,因此无需单独安装。 它包括各种加密哈希函数,如MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512以及SHA-3系列。 这些函数用于创建哈希对象,然后可以使用这些对象生成数据的哈希值。

主要功能

  1. 广泛的算法范围hashlib 支持多种哈希算法,包括较旧的算法如 MD5 和 SHA-1,以及更现代的算法如 SHA-256 和 SHA-3。

  2. 简单界面:每个哈希算法都有一个构造方法,该方法返回一个哈希对象。 可以使用 update 方法向此对象提供数据,并使用 digest 或 hexdigest 方法生成哈希值。

  3. 安全性:尽管像 MD5 和 SHA-1 这样的算法已知存在漏洞,但 hashlib 包含更安全的选项,如 SHA-256 和 SHA-3。

安装

hashlib 是一个内置模块,不需要显式安装。

基本用法

这是一个简单的示例,说明如何使用 hashlib 通过 hashlib 哈希构造函数生成 SHA-256 哈希:

import hashlib
# Creating hash objects with SHA-256
hash_object = hashlib.sha256()
# Update the hash object with data
hash_object.update(b'IronPDF from IronSoftware is Awesome')
# Get the hexadecimal representation of the hash in  bytes object
hash_hex = hash_object.hexdigest() # hash_hex is digest object
print(hash_hex) # byte string
#Output: 6fc0c7d6af8eb51f0cd89281db55c6a6b76b5310226fa5af2272a8eb42cc1bfe
py
PYTHON

高级功能

  • 多线程支持:使用加密哈希函数,如果一次提供的数据超过2047字节,hashlib将在计算哈希时释放全局解释器锁(GIL),从而在多线程应用程序中实现更好的性能。
  • 自定义哈希算法:如果您的 Python 发行版的 hashlib 关联到提供额外算法的 OpenSSL 构建版本,您可以通过 new() 方法访问它们。

使用HashLib模块的各种类型的哈希

简单哈希

import hashlib
# Simple hashing example
data = b'Hello, World!'
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
#output
SHA-256 Hash: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
py
PYTHON

该代码为传入的数据生成 SHA-256

2. 使用不同的摘要大小

import hashlib
# Hashing with different digest sizes
data = b'Hello, World!' # convert to binary data
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
#output hash digest with only hexadecimal digits
MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
py
PYTHON

该代码使用传递的数据生成md5、sha256和sha512的哈希值。

3. 密钥哈希

import hashlib
from hashlib import blake2b
# Keyed hashing example
h = blake2b(key=b'pseudorandom key', digest_size=16)
h.update(b'message data')
print(h.hexdigest())
#output
3d363ff7401e02026f4a4687d4863ced
py
PYTHON

4. 随机散列

import hashlib
import os
# Randomized hashing example (Salsa20)
data = b'Hello, World!'
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
#output
Randomized Hash (SHA-256): a2a3c1a30a2add1867d55eac97fd9c84dc679691c0f15ae09c01e1bcc63ba47a
py
PYTHON

这些示例涵盖了使用不同摘要大小的基本哈希。 可以根据特定要求或偏好进行调整,例如使用不同的算法或参数。

实际应用

  1. 数据完整性:通常使用哈希函数来确认记录的完整性。 通过比较原始数据的哈希值与接收数据的哈希值,您可以确保数据未被更改。

  2. 密码存储:哈希函数通常用于安全存储密码。 系统存储的是密码的哈希而不是实际的密码。 当用户登录时,输入密码的哈希值会与存储的哈希值进行比较。

  3. 数字签名:散列函数通常用于创建数字签名,以验证消息的真实性和完整性。

介绍IronPDF

hashlib Python(开发人员指南的工作原理):图1 - IronPDF for Python: The Python PDF Library

IronPDF 是一个强大的 Python 库,用于使用 HTML、CSS、图像和 JavaScript 创建、编辑和签署 PDF。 它提供高性能能力,且内存使用量极小。 用户可以通过HTML生成PDF合并拆分PDF文档,从PDF中提取文本和图像,应用水印将PDF光栅化为JPEG和PNG等图像格式,加密PDF文件,等等。 IronPDF 提供广泛的 PDF 操作。

IronPDF的主要功能

HTML 转换为 PDF

用户可以将HTML文件、HTML字符串和URL转换为PDF。 例如,使用 IronPDF 的 Chrome PDF 渲染器将网页渲染为 PDF

跨平台支持

IronPDF 适用于 Python 3+ 版本,并可在 Windows、Mac、Linux 或云平台上运行。

IronPDF 也可以在 .NETJavaPythonNode.js 中使用。

编辑和签署

用户可以设置属性,添加安全性,包括密码和权限,并使用IronPDF为PDF应用数字签名

页面模板和设置

IronPDF允许您通过页眉、页脚、页码和可调节的边距自定义PDF文档。 它还支持响应式布局和自定义纸张尺寸。

标准合规性

IronPDF 软件包也遵循诸如 PDF/A 和 PDF/UA 等 PDF 标准。 它支持UTF-8字符编码,并处理诸如图像、CSS和字体等资源。

使用IronPDF和HashLib模块生成PDF文档

IronPDF 前提条件

  1. IronPDF 使用 .NET 6.0 作为其底层技术。 因此,请确保您的系统上已安装.NET 6.0 运行时

  2. Python 3.0+:您需要安装 Python 3 或更高版本。

  3. Pip:安装 Python 包管理器pip以安装 IronPDF 包。

    首先,我们创建一个 Python 文件来添加脚本。在这个例子中,我们使用Visual Studio Code作为代码编辑器。

    打开 Visual Studio Code 并创建一个文件,hashlibDemo.py。

    安装IronPDF库:

pip install ironpdf
pip install ironpdf
SHELL

然后添加下面的代码,演示如何使用IronPDF和Hashlib Python包

import hashlib
import os
from hashlib import blake2b
from ironpdf import * 
# Apply your license key
License.LicenseKey = "your key"
# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with hashlib</h1>"
content += "<p>Data for all the below examples = IronPDF from IronSoftware is Awesome</p>"
content += "<h2> Simple hashing example</h2>"
content += "<p></p>"
# Simple hashing example
data = b'IronPDF from IronSoftware is Awesome'
content += "<p>hashlib.sha256(data)</p>"
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
content += "<p>SHA-256 Hash:"+str(hex_dig)+"</p>"
content += "<h2> Hashing with different digest sizes</h2>"
# Hashing with different digest sizes
hash_md5 = hashlib.md5(data).hexdigest()
content += "<p>hashlib.md5(data).hexdigest()</p>"
hash_sha256 = hashlib.sha256(data).hexdigest()
content += "<p>hashlib.sha256(data).hexdigest()</p>"
hash_sha512 = hashlib.sha512(data).hexdigest()
content += "<p>hashlib.sha512(data).hexdigest()</p>"
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
content += "<p>MD5 Hash (hex):"+str(hash_md5)+"</p>"
content += "<p>SHA-256 Hash (hex):"+str(hash_sha256)+"</p>"
content += "<p>SHA-512 Hash (hex):"+str(hash_sha512)+"</p>"
# Keyed hashing example
content += "<h2> Keyed hashing example</h2>"
h = blake2b(key=b'pseudorandom key', digest_size=16)
content += "<p></p>"
h.update(data)
print(h.hexdigest())
content += "<p>Keyed Hash (hex):"+str(h.hexdigest())+"</p>"
# Randomized hashing example 
content += "<h2> Randomized hashing example </h2>"
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
content += "<p>hashlib.pbkdf2_hmac('sha256', data, salt, 100000)</p>"
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
content += "<p>Randomized Hash (SHA-256):"+str(hex_dig)+"</p>"
#Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)
    # Export to a file or Stream
pdf.SaveAs("Demo-hashlib.pdf")
py
PYTHON

代码解释

所提供的代码展示了使用 Python 的hashlib库进行各种哈希技术的用法:

  1. 简单的哈希示例:计算特定数据字符串(`b'IronPDF from Iron Software is Awesome")的SHA-256哈希值。

  2. 使用不同摘要大小进行哈希:本节演示了在完全相同数据字符串上使用 MD5、SHA-256 和 SHA-512 算法进行哈希。3. 键控哈希示例:此示例使用 `blake2b` 哈希函数和指定的键(`b'pseudorandom key") 对数据进行键控哈希。

  3. 随机哈希示例:使用PBKDF2-HMAC算法结合SHA-256生成一个带有随机生成盐值的随机哈希。5. PDF生成:在展示哈希示例后,代码使用IronPDF生成一个包含展示哈希示例的HTML内容的PDF文档。

    每个示例展示了加密哈希的不同方面,例如标准哈希、带密钥的哈希和随机哈希技术。

输出

hashlib Python ((其工作原理:开发人员指南)):图 2 - 示例控制台输出

PDF

hashlib Python(开发者指南:其工作原理):图3 - 使用IronPDF生成PDF示例输出

IronPDF 许可证

hashlib Python((它是如何工作的:开发者指南)):图 4 - IronPDF 许可页面

IronPDF 运行在 Python 许可证密钥上。 IronPDF for Python 提供免费试用许可证密钥,允许用户在购买前测试其丰富的功能。

在使用IronPDF package之前,请将许可证密钥放在脚本的开头:

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
py
PYTHON

结论

hashlib模块是Python标准库的核心,提供了强大且安全的散列函数以用于各种应用程序。 无论是确保数据完整性、安全存储密码,还是创建数字签名,hashlib 都提供了必要的工具。 另一方面,IronPDF 是一个强大的 PDF 生成和 PDF 操作库。 通过这两个库,开发人员可以快速生成哈希值并将其存储为PDF格式。

查克尼特·宾
软件工程师
Chaknith 负责 IronXL 和 IronBarcode 的工作。他在 C# 和 .NET 方面拥有深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的洞察力,有助于提升产品、文档和整体体验。
< 前一页
Seaborn Python(开发者指南中的工作原理)
下一步 >
XGBoost Python(其工作原理:开发者指南)

准备开始了吗? 版本: 2025.5 刚刚发布

查看许可证 >