Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich passwortgeschützte Zeichenfolgen in Python sicher verschlüsseln?
Sichere Verschlüsselung für passwortgeschützte Zeichenfolgen
Problem:
Python fehlt eine integrierte Ein Mechanismus zum Verschlüsseln und Entschlüsseln von Zeichenfolgen mithilfe eines Kennworts. Dies kann bei Szenarien, die eine Datenverschleierung ohne strenge Sicherheitsmaßnahmen erfordern, problematisch sein.
Lösung:
Kryptografiebibliotheken wie Cryptography bieten sichere Verschlüsselungsschemata.
Verwendung von Fernet für die Verschlüsselung mit symmetrischen Schlüsseln
Fernet ist ein Best-Practice-Rezept für die Verwendung von Kryptographie. Es kombiniert AES-CBC-Verschlüsselung mit einer HMAC-Signatur, einem Zeitstempel und Versionsinformationen, um Daten zu schützen.
<code class="python">from cryptography.fernet import Fernet # Generate a random 32-byte key (securely store it) key = Fernet.generate_key() # Encrypt and decrypt messages using the key def encrypt(message, key): return Fernet(key).encrypt(message.encode()) def decrypt(token, key): return Fernet(key).decrypt(token).decode()</code>
Alternative Ansätze:
Datenverschleierung:
Wenn die Datenintegrität kein Problem darstellt, kann die Base64-Kodierung zur Verschleierung verwendet werden.
<code class="python">import base64 def obscure(data): return base64.urlsafe_b64encode(data) def unobscure(obscured): return base64.urlsafe_b64decode(obscured)</code>
Datenintegrität:
HMAC-Signatur kann die Datenintegrität sicherstellen, indem eine Signatur mithilfe eines Schlüssel- und Hashing-Algorithmus berechnet wird.
<code class="python">import hmac import hashlib def sign(data, key, algorithm=hashlib.sha256): return hmac.new(key, data, algorithm).digest() def verify(signature, data, key, algorithm=hashlib.sha256): return hmac.compare_digest(expected, signature)</code>
Verwendung von AES-GCM für Verschlüsselung mit Integrität
Ähnlich wie Fernet, AES- GCM bietet Verschlüsselung und Integrität mithilfe der Blockverschlüsselung im Galois-/Counter-Modus.
<code class="python">from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend def aes_gcm_encrypt(message, key): # ... (Implementation omitted for brevity) def aes_gcm_decrypt(token, key): # ... (Implementation omitted for brevity)</code>
Das obige ist der detaillierte Inhalt vonWie kann ich passwortgeschützte Zeichenfolgen in Python sicher verschlüsseln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!