PYTHON HILFE

Verwendung von PyCryptodome für die Verschlüsselung in Python

Veröffentlicht 1. Juli 2024
Teilen Sie:

Im Zeitalter der digitalen Transformation kann die Bedeutung robuster kryptografischer Mechanismen gar nicht hoch genug eingeschätzt werden. Die Kryptografie gewährleistet die Sicherheit und den Schutz von Daten, wenn sie durch verschiedene Netze und Systeme geleitet werden. PyCryptodome ist eine Python-Bibliothek, die sich in der kryptografischen Landschaft abhebt und eine Vielzahl von Funktionen zur Erleichterung der sicheren Datenverarbeitung bietet, wie z. B. authentifizierte Verschlüsselungsmodi(GCM, CCM, EAX, SIV, OCB) und beschleunigtes AES mit erstklassiger Unterstützung. Dieser Artikel befasst sich mit der letzten offiziellen Version von PyCryptodome und untersucht seine Funktionen, Anwendungsfälle, den vereinfachten Installationsprozess und wie es effektiv in verschiedenen Anwendungen eingesetzt werden kann. Wir werden auch verschlüsselte PDF-Dateien mit einer separaten C#-Bibliothek, IronPDF, mit PyCryptodome erstellen.

Überblick über PyCryptodome

PyCryptodome ist ein in sich geschlossenes Python-Paket mit kryptographischen Primitiven auf niedriger Ebene. Sie wurde als direkter Ersatz für die alte PyCrypto-Bibliothek entwickelt, wobei viele ihrer Einschränkungen beseitigt und ihre Möglichkeiten erweitert wurden. Es bietet eine breite Palette von kryptografischen Algorithmen und Protokollen, die es zu einem unschätzbaren Werkzeug für Entwickler machen, die Sicherheitsfunktionen in ihren Anwendungen implementieren müssen.

Wesentliche Merkmale

  1. Breite Algorithmus-Unterstützung: PyCryptodome unterstützt eine breite Palette von kryptographischen Algorithmen, darunter AES, RSA, DSA und viele mehr. Diese umfangreiche Unterstützung stellt sicher, dass Entwickler die notwendigen Werkzeuge für verschiedene kryptografische Anforderungen finden können.

  2. Benutzerfreundlichkeit: Die Bibliothek ist benutzerfreundlich gestaltet und verfügt über eine klare und übersichtliche API, die es auch Personen mit begrenzten kryptografischen Kenntnissen ermöglicht, Sicherheitsfunktionen effektiv zu implementieren.

  3. Aktive Wartung: Im Gegensatz zu seinem Vorgänger PyCrypto wird PyCryptodome aktiv gewartet, mit regelmäßigen Updates und Verbesserungen, die die Kompatibilität mit den neuesten Python-Versionen und Sicherheitsstandards gewährleisten.

  4. Eigenständig: PyCryptodome benötigt keine externen Abhängigkeiten, wodurch es einfach zu installieren und in verschiedenen Umgebungen zu verwenden ist.

  5. Integration mit bestehenden Bibliotheken: PyCryptodome lässt sich nahtlos in andere Python-Bibliotheken und -Frameworks integrieren, was seinen Nutzen in verschiedenen Anwendungen erhöht.

Einrichtung

Die Installation von PyCryptodome ist ein einfacher Prozess, da es in sich geschlossen ist. Es kann über pip, Pythons Paket-Installer, mit dem folgenden Befehl installiert werden:

pip install pycryptodome

Kernkonzepte und Module

PyCryptodome ist in mehrere Module unterteilt, die jeweils verschiedene Aspekte der Kryptographie behandeln. Das Verständnis dieser Module ist entscheidend für die effektive Nutzung der Bibliothek.

Hashing

Hash-Funktionen sind für die Kryptografie von grundlegender Bedeutung, da sie eine Möglichkeit bieten, aus beliebigen Daten einen Hash-Wert fester Größe zu erzeugen. PyCryptodome unterstützt verschiedene Hash-Algorithmen durch das Modul Crypto.Hash.

Beispiel für die Verwendung der Hash-Funktion SHA-256

from Crypto.Hash import SHA256
hash_object = SHA256.new(data=b'Hello, PyCryptodome!')
print(hash_object.hexdigest())
PYTHON

PyCryptodome(Wie es für Entwickler funktioniert): Abbildung 1 - Hashing-Ausgabe

Symmetrische Verschlüsselung

Bei der symmetrischen Verschlüsselung wird derselbe Schlüssel sowohl für die Verschlüsselung als auch für die Entschlüsselung verwendet. Das Modul "Crypto.Cipher" von PyCryptodome unterstützt mehrere symmetrische Chiffren, darunter AES, DES und andere.

Beispiel für AES-Verschlüsselung und -Entschlüsselung

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

key = get_random_bytes(16)  # 16 bytes for AES-128
cipher = AES.new(key, AES.MODE_EAX)
data = b'Secret Message'
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(data)

# Decryption
cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
plaintext = cipher.decrypt(ciphertext)
try:
    cipher.verify(tag)
    print("The message is authentic:", plaintext)
except ValueError:
    print("Key incorrect or message corrupted")
PYTHON

PyCryptodome(Wie es für Entwickler funktioniert): Abbildung 2 - AES-Ausgabe

Asymmetrische Verschlüsselung

Bei der asymmetrischen Verschlüsselung wird ein Schlüsselpaar verwendet: ein öffentlicher Schlüssel für die Verschlüsselung und ein privater Schlüssel für die Entschlüsselung. Das Modul "Crypto.PublicKey" von PyCryptodome bietet Unterstützung für RSA, DSA und ECC(Elliptische Kurven-Kryptographie).

Beispiel für RSA-Verschlüsselung und -Entschlüsselung

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

key = RSA.generate(2048)
public_key = key.publickey()
cipher = PKCS1_OAEP.new(public_key)
ciphertext = cipher.encrypt(b'Secret Message')

# Decryption
cipher = PKCS1_OAEP.new(key)
plaintext = cipher.decrypt(ciphertext)
print(plaintext)
PYTHON

PyCryptodome(Wie es für Entwickler funktioniert): Abbildung 3 - RSA-Ausgabe

Schlüssel Ableitung

Schlüsselableitungsfunktionen erzeugen kryptografische Schlüssel aus einem Passwort oder einer Passphrase. Dies ist besonders nützlich bei der passwortbasierten Verschlüsselung. PyCryptodome unterstützt PBKDF2, scrypt und andere Schlüsselableitungsalgorithmen.

Beispiel für die Verwendung von PBKDF2

from Crypto.Protocol.KDF import PBKDF2
from Crypto.Random import get_random_bytes

password = b'my secret password'
salt = get_random_bytes(16)
key = PBKDF2(password, salt, dkLen=32, count=1000000)
print(key)
PYTHON

PyCryptodome(Wie es für Entwickler funktioniert): Abbildung 4 - PBKDF2-Ausgabe

Anwendungsfälle

Passwortverwaltung

Passwortmanager profitieren von PyCryptodomes Funktionen zur Schlüsselableitung, um Benutzerpasswörter sicher zu speichern und abzurufen. Durch die Verwendung starker Schlüsselableitungsalgorithmen wie PBKDF2 können Entwickler sicherstellen, dass gespeicherte Passwörter gegen Brute-Force-Angriffe resistent sind.

Beispiel für sichere Passwörter

from Crypto.Protocol.KDF import PBKDF2
from Crypto.Random import get_random_bytes
from Crypto.Cipher import AES

# Derive a strong key from a password
password = b'user_password'
salt = get_random_bytes(16)
key = PBKDF2(password, salt, dkLen=32, count=1000000)

# Encrypt the password before storing
cipher = AES.new(key, AES.MODE_EAX)
stored_password = b'ActualPassword'
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(stored_password)

# Store ciphertext, nonce, salt, and tag securely
password_data = {
    'ciphertext': ciphertext,
    'nonce': nonce,
    'salt': salt,
    'tag': tag
}

# Decrypt the password when needed
key = PBKDF2(password, password_data['salt'], dkLen=32, count=1000000)
cipher = AES.new(key, AES.MODE_EAX, nonce=password_data['nonce'])
plaintext = cipher.decrypt(password_data['ciphertext'])
try:
    cipher.verify(password_data['tag'])
    print("The stored password is authentic:", plaintext)
except ValueError:
    print("Key incorrect or password corrupted")
PYTHON

PyCryptodome(Wie es für Entwickler funktioniert): Abbildung 5 - Sichern der Passwortausgabe

IronPDF for Python

IronPDF ist eine leistungsstarke PDF-Generierungsbibliothek für Python, mit der Entwickler mühelos PDF-Dokumente erstellen, bearbeiten und manipulieren können. Es bietet eine breite Palette von Funktionen, von der Konvertierung von HTML in PDF bis zur Zusammenführung mehrerer PDF-Dateien, und ist damit die ideale Wahl für die Automatisierung von Dokumenten-Workflows. In Kombination mit PyCryptodome, einer robusten Bibliothek für kryptografische Operationen, können Entwickler ihren PDF-Dokumenten sichere Funktionen wie Verschlüsselung und digitale Signaturen hinzufügen. Diese Integration ist besonders nützlich für Anwendungen, die ein hohes Maß an Sicherheit und Datenintegrität erfordern, wie z. B. in Finanz-, Rechts- oder vertraulichen Umgebungen.

Um IronPDF zu installieren, können Sie pip, den Python-Paketmanager, verwenden. So fangen Sie an:

pip install ironpdf

PyCryptodome(Wie es für Entwickler funktioniert): Abbildung 6 - IronPDF

Nach der Installation können Sie IronPDF für die Erstellung und Bearbeitung von PDF-Dateien verwenden. Im Folgenden wird anhand eines einfachen Beispiels gezeigt, wie ein PDF mit IronPDF erstellt und dann mit PyCryptodome verschlüsselt wird:

from ironpdf import *     
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import os

renderer = ChromePdfRenderer()
pdfFromUrl = renderer.RenderUrlAsPdf("https://ironpdf.com/")
pdfFromUrl.SaveAs("output.pdf")

# Encrypt the PDF with AES
def encrypt_file(file_name, key):
    cipher = AES.new(key, AES.MODE_CBC)
    iv = cipher.iv
    with open(file_name, 'rb') as f:
        data = f.read()
    encrypted_data = iv + cipher.encrypt(pad(data, AES.block_size))
    with open(file_name + '.enc', 'wb') as f:
        f.write(encrypted_data)

# Example usage
key = os.urandom(16)  # AES key must be either 16, 24, or 32 bytes long
encrypt_file("output.pdf", key)
PYTHON

Dieses Skript zeigt die Erstellung eines einfachen PDFs mit IronPDF und verschlüsselt es anschließend mit AES von PyCryptodome, was eine Grundlage für die Erstellung komplexerer und sicherer PDF-Anwendungen darstellt.

PyCryptodome(Wie es für Entwickler funktioniert): Abbildung 7 - Verschlüsselte Dateiausgabe

Schlussfolgerung

Zusammenfassend lässt sich sagen, dass PyCryptodome eine leistungsstarke und vielseitige Python-Bibliothek ist, die die kryptografischen Operationen für Entwickler erheblich verbessert und eine breite Palette von Algorithmen sowie eine einfache Integration mit anderen Tools wie IronPDF bietet. Mit seinem umfassenden Funktionsumfang, einschließlich Unterstützung für authentifizierte Verschlüsselungsmodi, symmetrische und asymmetrische Verschlüsselung, Hashing und Schlüsselableitung, erfüllt PyCryptodome die Anforderungen moderner Anwendungen, die robuste Sicherheitsmaßnahmen erfordern. Seine Benutzerfreundlichkeit, seine aktive Wartung und sein eigenständiger Charakter machen es zu einem unverzichtbaren Werkzeug für die Implementierung einer sicheren Datenverarbeitung in verschiedenen Szenarien, von der Passwortverwaltung bis hin zur sicheren Dokumentenerstellung und Verschlüsselung, die die Integrität und Vertraulichkeit von Daten in einer zunehmend digitalen Welt gewährleisten.

Einzelheiten zur IronPDF-Lizenzierung finden Sie auf der IronPDF-Lizenzseite. Weitere Informationen finden Sie in unserem ausführlichen Tutorial zur Konvertierung von HTML in PDF.

< PREVIOUS
Verwendung von WhisperX in Python für die Transkription
NÄCHSTES >
OpenTelemetry Python (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.12 gerade veröffentlicht

pip install gratuit Lizenzen anzeigen >