Heim >Backend-Entwicklung >Python-Tutorial >Wie verschlüssele und entschlüssele ich Strings mithilfe von Passwörtern in Python sicher?
Die Kryptografiebibliothek von Python ist ein umfassendes Toolkit zum Ver- und Entschlüsseln von Daten. Um Zeichenfolgen mit einem Passwort zu verschlüsseln, können Sie die Fernet-Klasse nutzen, die eine robuste Verschlüsselung bietet und wichtige Funktionen wie einen Zeitstempel, eine HMAC-Signatur und Base64-Kodierung enthält.
<code class="python">from cryptography.fernet import Fernet, FernetException password = 'mypass' fernet = Fernet(password.encode()) encrypted_message = fernet.encrypt(b'John Doe') decrypted_message = fernet.decrypt(encrypted_message) print(encrypted_message) # Encrypted string print(decrypted_message.decode()) # 'John Doe'</code>
Fernet schützt verschlüsselte Daten, indem es mehrere Verschlüsselungsebenen anwendet und die Nachrichtenintegrität mit einer HMAC-Signatur gewährleistet.
Während die Verwendung eines Passworts direkt mit Fernet praktisch ist ist es sicherer, einen Schlüssel mithilfe eines Passworts zu generieren. Bei diesem Ansatz wird mithilfe einer Schlüsselableitungsfunktion ein geheimer Schlüssel aus dem Passwort und dem Salt abgeleitet.
<code class="python">import secrets from cryptography.fernet import Fernet from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC backend = default_backend() salt = secrets.token_bytes(16) # Generate a unique salt password = 'mypass'.encode() # Convert password to bytes kdf = PBKDF2HMAC( algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000, backend=backend ) key = b64e(kdf.derive(password)) # Derive the secret key fernet = Fernet(key) encrypted_message = fernet.encrypt(b'John Doe')</code>
Diese Methode erhöht die Sicherheit, indem sie dem Verschlüsselungsprozess eine zusätzliche Schutzebene mit einem starken, aus Ihrem Passwort abgeleiteten Schlüssel hinzufügt und ein einzigartiges Salz.
Über Fernet hinaus können Sie je nach Ihren spezifischen Anforderungen Alternativen in Betracht ziehen:
Base64 Obscuring: Für Basic Verschleierung, Base64-Kodierung kann ohne Verschlüsselung verwendet werden. Dies bietet jedoch keine wirkliche Sicherheit, sondern nur Unklarheit.
HMAC-Signatur: Wenn Ihr Ziel die Datenintegrität ist, verwenden Sie HMAC-Signaturen, um sicherzustellen, dass die Daten nicht manipuliert wurden.
AES-GCM-Verschlüsselung: AES-GCM verwendet die Galois/Counter-Mode-Blockverschlüsselung, um sowohl Verschlüsselung als auch Integritätsgarantien zu bieten, ähnlich wie Fernet, jedoch ohne dessen benutzerfreundliche Funktionen.
Das obige ist der detaillierte Inhalt vonWie verschlüssele und entschlüssele ich Strings mithilfe von Passwörtern in Python sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!