Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menyulitkan dan Menyahsulit Rentetan dengan Selamat Menggunakan Kata Laluan dalam Python?
Perpustakaan kriptografi Python ialah kit alat komprehensif untuk menyulitkan dan menyahsulit data. Untuk menyulitkan rentetan menggunakan kata laluan, anda boleh memanfaatkan kelas Fernet, yang menyediakan penyulitan yang teguh dan termasuk ciri penting seperti cap waktu, tandatangan HMAC dan pengekodan base64.
<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 memastikan data yang disulitkan selamat dengan menggunakan berbilang lapisan penyulitan dan memastikan integriti mesej dengan tandatangan HMAC.
Sambil menggunakan kata laluan terus dengan Fernet adalah mudah , lebih selamat untuk menjana kunci menggunakan kata laluan. Pendekatan ini melibatkan mendapatkan kunci rahsia daripada kata laluan dan garam menggunakan fungsi terbitan kunci.
<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>
Kaedah ini meningkatkan keselamatan dengan menambahkan lapisan perlindungan tambahan pada proses penyulitan dengan kunci kukuh yang diperoleh daripada kata laluan anda dan garam yang unik.
Di luar Fernet, anda boleh mempertimbangkan alternatif bergantung pada keperluan khusus anda:
Base64 Mengaburkan: Untuk asas kekeliruan, pengekodan base64 boleh digunakan tanpa penyulitan. Walau bagaimanapun, ini tidak memberikan sebarang keselamatan sebenar, hanya kekaburan.
Tandatangan HMAC: Jika matlamat anda ialah integriti data, gunakan tandatangan HMAC untuk memastikan data tidak diganggu.
Penyulitan AES-GCM: AES-GCM menggunakan penyulitan blok Galois/Counter Mode untuk menyediakan kedua-dua penyulitan dan jaminan integriti, sama seperti Fernet tetapi tanpa ciri mesra penggunanya.
Atas ialah kandungan terperinci Bagaimana untuk Menyulitkan dan Menyahsulit Rentetan dengan Selamat Menggunakan Kata Laluan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!