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. Breites Spektrum an Algorithmen: hashlib unterstützt mehrere Hash-Algorithmen, darunter ältere wie MD5 und SHA-1 sowie modernere wie SHA-256 und SHA-3.
  2. Einfache Schnittstelle: Jeder Hash-Algorithmus verfügt über eine Konstruktormethode, 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 aufweisen, bietet 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

  • Unterstützung für Multithreading: Mit der kryptografischen Hash-Funktion gibt hashlib die globale Interpretersperre (GIL) während der Hash-Berechnung frei, wenn mehr als 2047 Bytes an Daten auf einmal bereitgestellt werden. Dies ermöglicht eine bessere Performance in Multithread-Anwendungen.
  • Benutzerdefinierte Hash-Algorithmen: Wenn die Hash-Bibliothek Ihrer Python-Distribution mit einer OpenSSL-Version verknüpft ist, die 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 im Allgemeinen 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 verwendet, um Passwörter sicher zu speichern. 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: Zur Erstellung digitaler Signaturen werden häufig Hash-Funktionen verwendet, 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 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 for 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 der hashlib-Bibliothek von Python:

  1. Einfaches Hashing-Beispiel: Berechnet den SHA-256-Hash einer bestimmten Datenzeichenkette (b'IronPDF from Iron Software is Awesome').
  2. Hashing mit unterschiedlichen Digest-Größen: In diesem Abschnitt wird das Hashing mit den Algorithmen MD5, SHA-256 und SHA-512 auf der exakten Datenzeichenkette demonstriert.
  3. Beispiel für Keyed-Hashing: Dieses Beispiel verwendet die blake2b-Hashfunktion mit einem angegebenen Schlüssel (b'pseudorandom key'), um Keyed Hashing auf den Daten durchzuführen.
  4. Beispiel für randomisiertes Hashing: Verwendet den PBKDF2-HMAC-Algorithmus mit SHA-256, um einen randomisierten Hash mit einem zufällig generierten Salt zu erzeugen.
  5. PDF-Generierung: Nach der Demonstration der Hash-Beispiele generiert der Code mit IronPDF ein PDF-Dokument, das den HTML-Inhalt mit den Hash-Beispielen enthält.

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

Ausgabe

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

PDF

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

IronPDF-Lizenz

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

IronPDF läuft mit dem Python-Lizenzschlüssel. IronPDF for 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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me