Zum Fußzeileninhalt springen
PYTHON-HILFE

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

Das hashlib-Modul in Python ist ein leistungsfähiges Werkzeug für den Umgang mit sicheren Hash- und Digest-Algorithmen. Dieses Modul bietet eine standardisierte Schnittstelle zu vielen sicheren Hash-Algorithmen, was es zu einer vielseitigen Wahl für Entwickler macht, die Datenintegrität und -sicherheit gewährleisten müssen. Später im Artikel werden wir uns eine vielseitige PDF-Generierungsbibliothek von Iron Software namens IronPDF ansehen und ein Skript schreiben, das beide Bibliotheken verwendet, um ihre Nutzung zu demonstrieren.

Das hashlib-Modul ist Teil der Standardbibliothek von Python, sodass keine separate Installation erforderlich ist. Es 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 eingesetzt werden können, um Hashes von Daten zu erzeugen.

Wichtige Merkmale

  1. Große Auswahl an Algorithmen: hashlib unterstützt mehrere Hash-Algorithmen, einschließlich älterer wie MD5 und SHA-1 sowie modernerer wie SHA-256 und SHA-3.
  2. Einfache Schnittstelle: Jeder Hash-Algorithmus hat eine Konstruktor-Methode, die ein Hash-Objekt zurückgibt. Dieses Objekt kann mit Daten über die Update-Methode versorgt werden und den Hash-Wert mithilfe der Methoden Digest oder Hexdigest erzeugen.
  3. Sicherheit: Während einige Algorithmen wie MD5 und SHA-1 bekannte Schwachstellen haben, enthält hashlib sicherere Optionen wie SHA-256 und SHA-3.

Installation

hashlib ist ein eingebautes Modul und erfordert keine explizite Installation.

Grundlagen

Hier ist ein einfaches Beispiel, wie hashlib verwendet wird, um einen SHA-256-Hash mit dem hashlib-Hash-Konstruktor 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 kryptografischen Hash-Funktion gibt hashlib das Global Interpreter Lock (GIL) frei, wenn mehr als 2047 Byte Daten auf einmal bereitgestellt werden, was in multithreaded Anwendungen zu besserer Leistung führt.
  • Benutzerdefinierte Hash-Algorithmen: Wenn das hashlib Ihrer Python-Distribution mit einem OpenSSL-Build verknüpft ist, der zusätzliche Algorithmen bereitstellt, können Sie über die Methode new() 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. Verwendung unterschiedlicher Digest-Größen

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 mit den bereitgestellten Daten.

3. Schlüssel-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 zeigt die Erstellung eines Schlüssel-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 decken grundlegendes Hashing mit unterschiedlichen Digest-Größen ab. Anpassungen können basierend auf spezifischen Anforderungen oder Vorlieben vorgenommen werden, wie z. B. die Verwendung unterschiedlicher Algorithmen oder Parameter.

Praktische Anwendungen

  1. Datenintegrität: Hash-Funktionen werden allgemein verwendet, um die Integrität von Datensätzen zu bestätigen. Indem Sie den Hash der Originaldaten mit dem Hash der empfangenen Daten vergleichen, können Sie sicherstellen, dass die Daten nicht verändert wurden.
  2. Passwortspeicherung: Hash-Funktionen werden häufig zur sicheren Speicherung von Passwörtern verwendet. Das System speichert den Hash des Passworts anstelle des tatsächlichen 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 zur Erstellung digitaler Signaturen verwendet, die die Authentizität und Integrität einer Nachricht bestätigen.

Einführung in IronPDF

hashlib Python ((Funktionsweise: Ein Leitfaden für Entwickler)): Abbildung 1 - IronPDF für Python: Die Python PDF-Bibliothek

IronPDF ist eine leistungsstarke Python-Bibliothek zum Erstellen, Bearbeiten und Signieren von PDFs unter Verwendung von HTML, CSS, Bildern und JavaScript. Es bietet leistungsstarke Fähigkeiten mit minimalem Speicherverbrauch. Benutzer können PDFs aus HTML generieren, kombinieren oder teilen Sie PDF-Dokumente, Text und Bilder aus PDFs extrahieren, Wasserzeichen anwenden, ein PDF in Bild-Formate wie JPEG und PNG rasterisieren, PDF-Dateien verschlüsseln und mehr. IronPDF bietet eine breite Palette von PDF-Operationen.

Schlüsselfunktionen von IronPDF

HTML zu PDF Konvertierung

Benutzer können HTML-Dateien, HTML-Strings und URLs in PDFs konvertieren. Zum Beispiel, eine Webseite als PDF rendern mithilfe des Chrome PDF-Renders von IronPDF.

Plattformübergreifende Unterstützung

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

IronPDF ist auch in .NET, Java, Python und Node.js verfügbar.

Bearbeitung und Signierung

Der Benutzer kann Eigenschaften festlegen, Sicherheit hinzufügen mit Passwörtern und Berechtigungen sowie digitale Signaturen zu PDFs mit IronPDF anwenden.

Seitentemplates und Einstellungen

IronPDF ermöglicht es Ihnen, PDF-Dokumente mit Kopfzeilen, Fußzeilen, Seitenzahlen und anpassbaren Rändern anzupassen. Es unterstützt auch responsive Layouts und benutzerdefinierte Papierformate.

Standardkonformität

Das IronPDF-Paket entspricht auch PDF-Standards wie PDF/A und PDF/UA. Es unterstützt UTF-8-Zeichencodierung und verarbeitet Ressourcen wie Bilder, CSS und Schriftarten.

PDF-Dokumente mit IronPDF und dem HashLib-Modul erzeugen

Voraussetzungen für IronPDF

  1. IronPDF verwendet .NET 6.0 als zugrunde liegende Technologie. Stellen Sie daher sicher, dass die .NET 6.0 Runtime auf Ihrem System installiert ist.
  2. Python 3.0+: Sie müssen Python Version 3 oder später installiert haben.
  3. Pip: Installieren Sie den Python-Paketinstaller pip, um das IronPDF-Paket zu installieren.

Zu Beginn erstellen wir eine Python-Datei, um unsere Skripte hinzuzufügen. In diesem Beispiel verwenden wir Visual Studio Code als Code-Editor.

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

IronPDF-Bibliothek installieren:

pip install ironpdf

Fügen Sie dann den untenstehenden Code hinzu, um die Verwendung der IronPDF- und Hashlib-Python-Pakete 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-Erklärung

Der bereitgestellte Code zeigt die Verwendung verschiedener Hashing-Techniken unter Verwendung von Python's hashlib-Bibliothek:

  1. Einfaches Hashbeispiel: Berechnet den SHA-256-Hash eines spezifischen Datenstrings (b'IronPDF von Iron Software ist großartig').
  2. Hashing mit unterschiedlichen Digest-Größen: Dieser Abschnitt demonstriert das Hashing mit MD5-, SHA-256- und SHA-512-Algorithmen auf dem genauen Datenstring.
  3. Beispiel für Schlüssel-Hashing: Dieses Beispiel verwendet die blake2b-Hash-Funktion mit einem angegebenen Schlüssel (b'pseudorandom key'), um ein Schlüssel-Hashing auf die Daten anzuwenden.
  4. Zufälliges Hashbeispiel: Verwendet den PBKDF2-HMAC-Algorithmus mit SHA-256, um ein zufälliges Hash mit einem zufällig generierten Salt zu erzeugen.
  5. PDF-Erzeugung: Nachdem die Hashing-Beispiele demonstriert wurden, erzeugt der Code ein PDF-Dokument mit IronPDF, das den HTML-Inhalt zeigt, der die Hashing-Beispiele präsentiert.

Jedes Beispiel illustriert verschiedene Aspekte des kryptografischen Hashings, wie Standard-Hashing, Schlüssel-Hashing und zufällige Hashing-Techniken.

Ausgabe

hashlib Python ((Funktionsweise: Ein Leitfaden für Entwickler)): Abbildung 2 - Beispiel Konsolenausgabe

PDF

hashlib Python ((Funktionsweise: Ein Leitfaden für Entwickler)): Abbildung 3 - Beispiel PDF-Ausgabe mit IronPDF

IronPDF-Lizenz

hashlib Python ((Funktionsweise: Ein Leitfaden für Entwickler)): Abbildung 4 - IronPDF Lizenzierungsseite

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

Setzen Sie den Lizenzschlüssel am 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 hashlib-Modul ist ein grundlegender Bestandteil der Standardbibliothek von Python und bietet robuste und sichere Hash-Funktionen für verschiedene Anwendungen. Egal, ob Sie die Datenintegrität sicherstellen, Passwörter sicher speichern oder digitale Signaturen erstellen möchten, hashlib bietet die notwendigen Werkzeuge. Auf der anderen Seite ist IronPDF eine leistungsstarke PDF-Generierungs- und PDF-Manipulationsbibliothek. 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