PYTHON 幫助

hashlib Python(工作原理:開發者指南)

發佈 2025年2月19日
分享:

hashlibPython 模組是一個用於處理安全哈希和消息摘要算法的強大工具。 該模組提供標準介面給多種安全雜湊演算法,使其成為開發人員需要確保數據完整性和安全性的多功能選擇。 在本文後面,我們還將研究一個來自 IronPDF 的多功能 PDF 生成庫IronSoftware稱為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
PYTHON

進階功能

  • 多執行緒支持:通過加密雜湊函數,hashlib 釋放了全域直譯器鎖(GIL)當計算雜湊時,如果一次提供超過2047字節的資料,就能在多執行緒應用程式中提高效能。
  • 自訂哈希算法:如果您的 Python 發行版的 hashlib 鏈接到提供其他算法的 OpenSSL 構建,您可以通過新的方式訪問它們。()方法。

使用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
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
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
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
PYTHON

這些範例涵蓋了使用不同摘要大小的基本雜湊。 可以根據具體要求或偏好進行調整,例如使用不同的算法或參數。

實際應用

  1. 資料完整性:通常使用雜湊函數來確認記錄的完整性。 透過比較原始資料的雜湊值與接收到的資料的雜湊值,您可以確保資料未被更改。

  2. 密碼儲存:雜湊函數常用於安全地儲存密碼。 系統儲存的是密碼的哈希值而非實際的密碼。 當使用者登入時,輸入密碼的雜湊值會與儲存的雜湊值進行比較。

  3. 數位簽章:雜湊函數通常用於創建數位簽章,以驗證訊息的真實性和完整性。

介紹 IronPDF

hashlib Python((如何運作:開發者指南)):圖1 - IronPDF for Python:Python PDF庫

IronPDF是用於使用HTML、CSS、圖像和JavaScript創建、編輯和簽署PDF的強大Python庫。 它提供高效能並且儲存器使用量極短。 用戶可以從 HTML 生成 PDF, 合併分割PDF 文件,從 PDF 中提取文字和圖片,套用浮水印, 將 PDF 光柵化為圖像JPEG 和 PNG 等格式,加密 PDF 文件,以及更多。 IronPDF 提供廣泛的 PDF 操作功能。

IronPDF 的主要特點

HTML 轉 PDF

用戶可以將 HTML 文件、HTML 字串和 URL 轉換為 PDF。 例如,將網頁渲染為PDF使用 IronPDF 的 Chrome PDF 渲染器從 IronPDF。

跨平台支援

IronPDF設計用於Python 3+版本,並可在Windows、Mac、Linux或雲端平台上運行。

IronPDF 也有提供.NET, Java, Python,和Node.js.

編輯和簽署

用戶可以設定屬性,添加安全性密碼和權限,和套用數位簽章使用 IronPDF 轉換為 PDF。

頁面模板和設置

IronPDF允許您自訂PDF文件,配合頁首、頁尾,頁碼和可調整的邊距。 它還支援響應式版面配置和自定義紙張大小。

標準合規性

IronPDF 套件還遵循 PDF 標準,例如 PDF/A 和 PDF/UA。 支持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

然後新增以下程式碼以示範 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")
PYTHON

程式碼說明

所提供的代碼展示了使用 Python 的 hashlib 庫進行各種哈希技術的方法:

  1. 簡單哈希範例:計算特定數據字符串的 SHA-256 哈希值(b'IronPDF 來自 Iron Software 是非常棒的).

  2. 使用不同摘要大小的雜湊:本節示範使用 MD5、SHA-256 和 SHA-512 演算法對相同的數據字串進行雜湊。3. 加密雜湊範例:此範例使用指定密鑰的 `blake2b` 雜湊函數(偽隨機密鑰)對數據執行鍵控哈希。

  3. 隨機雜湊範例:使用 PBKDF2-HMAC 演算法結合 SHA-256 來生成帶有隨機生成鹽值的隨機雜湊。5. PDF 生成:在展示雜湊範例後,程式碼使用 IronPDF 生成 PDF 文件,其中包含展示雜湊範例的 HTML 內容。

    每個範例說明了密碼雜湊的不同方面,例如標準雜湊、鍵雜湊和隨機雜湊技術。

輸出

hashlib Python((如何運作:開發人員指南)):圖2 - 範例主控台輸出

PDF

hashlib Python((運作原理:開發者指南)):圖3 - 使用IronPDF的PDF輸出範例

IronPDF 授權

hashlib Python((如何運作:開發人員指南)):圖 4 - IronPDF 授權頁面

IronPDF運行於 Python 授權金鑰。 IronPDF for Python 提供免費試用授權金鑰讓用戶在購買前測試其廣泛的功能。

在使用前,將授權金鑰放置於腳本的開始處。IronPDF 套件:

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

結論

hashlib 模組是 Python 標準函式庫中不可或缺的一部分,為各種應用程式提供強大且安全的雜湊函數。 無論您是在確保數據完整性、安全地存儲密碼,還是創建數位簽章,hashlib 都提供了必要的工具。 另一方面,IronPDF是一個功能強大的 PDF 生成和 PDF 操作程式庫。 使用這兩個庫,開發者可以快速生成雜湊並將其儲存為 PDF 格式。

里根普恩

里根普恩

軟體工程師

 LinkedIn

Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
下一個 >
XGBoost Python(它是如何工作的:開發人員指南)