Zum Fußzeileninhalt springen
PYTHON-HILFE

hashlib Python (Wie es funktioniert: Ein Leitfaden für Entwickler)

Das hashlib-Modul in Python ist ein leistungsstarkes Werkzeug für die Arbeit mit sicheren Hash- und Message-Digest-Algorithmen. Dieses Modul bietet eine Standardschnittstelle zu vielen sicheren Hash-Algorithmen, was es zu einer vielseitigen Wahl für Entwickler macht, die Datenintegrität und -sicherheit gewährleisten müssen. Later in the article, we will also look into a versatile PDF generation Library from IronSoftware called IronPDF and write a script using both libraries to demonstrate their usage.

Das Modul hashlib ist Teil der Standardbibliothek von Python, so dass es nicht separat installiert werden muss. Sie umfasst verschiedene kryptografische Hash-Funktionen, wie MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 und die SHA-3-Serie. Diese Funktionen werden verwendet, um Hash-Objekte zu erstellen, die dann verwendet werden können, um Hashes von Daten zu erzeugen.

Wichtige Merkmale

  1. Großes Spektrum an Algorithmen: hashlib unterstützt mehrere Hash-Algorithmen, darunter ältere wie MD5 und SHA-1 und modernere wie SHA-256 und SHA-3.
  2. Einfache Schnittstelle: Jeder Hash-Algorithmus hat eine Konstruktormethode, die ein Hash-Objekt zurückgibt. Dieses Objekt kann mit Hilfe der Update-Methode mit Daten gefüttert werden und den Hash-Wert mit Hilfe der Methoden digest oder hexdigest erzeugen.
  3. Sicherheit: Während einige Algorithmen wie MD5 und SHA-1 bekannte Sicherheitslücken aufweisen, enthält hashlib sicherere Optionen wie SHA-256 und SHA-3.

Installation

hashlib ist ein eingebautes Modul und muss nicht explizit installiert werden.

Grundlegende Verwendung

Hier ist ein einfaches Beispiel für die Verwendung von hashlib, um einen SHA-256-Hash mit dem Hash-Konstruktor von hashlib zu erzeugen:

import hashlib

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

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

Erweiterte Funktionen

  • Multithreading-Unterstützung: Mit der kryptographischen Hash-Funktion gibt hashlib die Global Interpreter Lock (GIL) während der Berechnung eines Hashes frei, wenn mehr als 2047 Bytes an Daten auf einmal geliefert werden, was eine bessere Leistung in Multithreading-Anwendungen ermöglicht.
  • Benutzerdefinierte Hash-Algorithmen: Wenn die Hashlib Ihrer Python-Distribution mit einem Build von OpenSSL verknüpft ist, das zusätzliche Algorithmen bereitstellt, können Sie über die new()-Methode darauf zugreifen.

Verschiedene Arten des Hashings mit dem HashLib-Modul

1. Einfaches Hashing

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

Der Code generiert einen SHA-256-Hash für die Eingabedaten.

2. verschiedene Digest-Größen verwenden

import hashlib

# Hashing with different digest sizes
data = b'Hello, World!'

# MD5, SHA-256, and SHA-512 hash generation
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()

# Print each hash
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
# Output:
# MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
# SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
# SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
import hashlib

# Hashing with different digest sizes
data = b'Hello, World!'

# MD5, SHA-256, and SHA-512 hash generation
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()

# Print each hash
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
# Output:
# MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
# SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
# SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
PYTHON

Der Code generiert Hashes für MD5, SHA-256 und SHA-512 unter Verwendung der bereitgestellten Daten.

3. keyed-hashing

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

Dieser Code demonstriert die Erstellung eines verschlüsselten Hashes mit dem Blake2b-Algorithmus.

4. zufälliges Hashing

import hashlib
import os

# Randomized hashing example using PBKDF2-HMAC
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
import hashlib
import os

# Randomized hashing example using PBKDF2-HMAC
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

Diese Beispiele behandeln grundlegende Hash-Verfahren mit verschiedenen Hash-Größen. Anpassungen können auf der Grundlage spezifischer Anforderungen oder Präferenzen vorgenommen werden, z. B. die Verwendung unterschiedlicher Algorithmen oder Parameter.

Praktische Anwendungen

  1. Datenintegrität: Hash-Funktionen werden im Allgemeinen verwendet, um die Integrität von Datensätzen zu bestätigen. Durch den Vergleich des Hashwerts der Originaldaten mit dem Hashwert der empfangenen Daten können Sie sicherstellen, dass die Daten nicht verändert worden sind.
  2. Passwortspeicherung: Hash-Funktionen werden häufig verwendet, um Passwörter sicher zu speichern. Das System speichert den Hash des Passworts anstelle des eigentlichen Passworts. Wenn sich ein Benutzer anmeldet, wird der Hash des eingegebenen Passworts mit dem gespeicherten Hash verglichen.
  3. Digitale Signaturen: Hash-Funktionen werden häufig verwendet, um digitale Signaturen zu erstellen, die die Authentizität und Integrität einer Nachricht überprüfen.

Einführung in IronPDF

hashlib Python ((How It Works: A Guide for Developers)): Abbildung 1 - IronPDF for Python: Die Python-PDF-Bibliothek

IronPDF ist eine leistungsstarke Python-Bibliothek zum Erstellen, Bearbeiten und Signieren von PDFs mit HTML, CSS, Bildern und JavaScript. Sie bietet leistungsstarke Funktionen bei minimalem Speicherverbrauch. Users can generate PDFs from HTML, merge or split PDF documents, extract text and images from PDFs, apply watermarks, rasterize a PDF to image formats like JPEG and PNG, encrypt PDF files, and more. IronPDF bietet eine breite Palette von PDF-Operationen.

Wichtige Merkmale von IronPDF

HTML zu PDF Konvertierung

Benutzer können HTML-Dateien, HTML-Strings und URLs in PDFs konvertieren. Beispiel: Rendering einer Webseite als PDF mit dem Chrome PDF-Renderer von IronPDF.

Plattformübergreifende Unterstützung

IronPDF ist für Python 3+ Versionen konzipiert und läuft auf Windows, Mac, Linux oder Cloud-Plattformen.

IronPDF is also available in .NET, Java, Python, and Node.js.

Bearbeiten und Signieren

The user can set properties, add security with passwords and permissions, and apply digital signatures to PDFs using IronPDF.

Seitenvorlagen und Einstellungen

IronPDF ermöglicht die individuelle Gestaltung von PDF-Dokumenten mit Kopf- und Fußzeilen, Seitenzahlen und einstellbaren Rändern. Sie unterstützt auch responsive Layouts und benutzerdefinierte Papiergrößen.

Einhaltung von Normen

Das IronPDF-Paket hält sich auch an PDF-Standards wie PDF/A und PDF/UA. Es unterstützt die UTF-8-Zeichenkodierung und verarbeitet Assets wie Bilder, CSS und Schriftarten.

Erzeugen von PDF-Dokumenten mit IronPDF und dem HashLib-Modul

IronPDF-Voraussetzungen

  1. IronPDF verwendet .NET 6.0 als Basistechnologie. Stellen Sie daher sicher, dass .NET 6.0 runtime auf Ihrem System installiert ist.
  2. Python 3.0+: Sie müssen Python Version 3 oder höher installiert haben.
  3. Pip: Installieren Sie das Python-Paket-Installationsprogramm pip, um das IronPDF-Paket zu installieren.

Zu Beginn erstellen wir eine Python-Datei, in die wir unsere Skripte einfügen. Für dieses Beispiel verwenden wir Visual Studio Code als Code-Editor.

Öffnen Sie Visual Studio Code und erstellen Sie eine Datei, hashlibDemo.py.

Installieren Sie die IronPDF-Bibliothek:

pip install ironpdf

Fügen Sie dann den folgenden Code ein, um die Verwendung der Python-Pakete IronPDF und Hashlib zu demonstrieren

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 Iron Software is Awesome</p>"
content += "<h2> Simple hashing example</h2>"

# Simple hashing example
data = b'IronPDF from Iron Software 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")
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 Iron Software is Awesome</p>"
content += "<h2> Simple hashing example</h2>"

# Simple hashing example
data = b'IronPDF from Iron Software 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

Code-Erläuterung

Der mitgelieferte Code veranschaulicht die Verwendung verschiedener Hashing-Techniken unter Verwendung der hashlib-Bibliothek von Python:

  1. Einfaches Hashing-Beispiel: Berechnet den SHA-256-Hash eines bestimmten Datenstrings (b'IronPDF von Iron Software is Awesome').
  2. Hashing mit verschiedenen Digest-Größen: Dieser Abschnitt demonstriert das Hashing mit den Algorithmen MD5, SHA-256 und SHA-512 für den exakten Datenstring.
  3. Keyed-Hashing-Beispiel: Dieses Beispiel verwendet die blake2b-Hash-Funktion mit einem angegebenen Schlüssel (b'pseudozufälliger Schlüssel'), um ein Keyed Hashing der Daten durchzuführen.
  4. Randomized Hashing Example: Verwendet den PBKDF2-HMAC-Algorithmus mit SHA-256, um einen randomisierten Hash mit einem zufällig generierten Salt zu erzeugen.
  5. PDF-Erstellung: Nach der Demonstration der Hashing-Beispiele generiert der Code mit IronPDF ein PDF-Dokument, das den HTML-Inhalt enthält, der die Hashing-Beispiele zeigt.

Jedes Beispiel veranschaulicht verschiedene Aspekte des kryptografischen Hashings, wie z. B. Standard-Hashing, Keyed Hashing und randomisierte Hashing-Verfahren.

Ausgabe

hashlib Python ((How It Works: A Guide for Developers)): Abbildung 2 - Beispiel einer Konsolenausgabe

PDF

hashlib Python ((How It Works: A Guide for Developers)): Abbildung 3 - Beispiel einer PDF-Ausgabe mit IronPDF

IronPDF Lizenz

hashlib Python ((How It Works: A Guide for Developers)): Abbildung 4 - IronPDF-Lizenzierungsseite

IronPDF läuft mit dem Python-Lizenzschlüssel. IronPDF for Python bietet einen kostenlosen Testlizenzschlüssel, mit dem die Benutzer die umfangreichen Funktionen vor dem Kauf testen können.

Setzen Sie den Lizenzschlüssel an den Anfang des Skripts, bevor Sie das IronPDF-Paket verwenden:

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

Abschluss

Das Modul hashlib ist ein wesentlicher Bestandteil der Standardbibliothek von Python und bietet robuste und sichere Hash-Funktionen für verschiedene Anwendungen. Ganz gleich, ob Sie die Integrität von Daten gewährleisten, Passwörter sicher speichern oder digitale Signaturen erstellen möchten, hashlib bietet die notwendigen Werkzeuge. Bei IronPDF handelt es sich hingegen um eine leistungsstarke Bibliothek zur PDF-Erzeugung und -Bearbeitung. Mit diesen beiden Bibliotheken können Entwickler schnell Hashes erzeugen und sie im PDF-Format speichern.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen