Rumah >pembangunan bahagian belakang >Tutorial Python >Penyulitan data simetri dengan Python
Selamat datang ke pikoTutorial seterusnya !
Salah satu cara paling mudah untuk melaksanakan penyulitan simetri dalam Python ialah menggunakan algoritma Fernet daripada modul kriptografi. Mari pasang dengan arahan:
pip install cryptography
Memiliki modul kriptografi tersedia, mari tulis skrip penyulitan pertama kami:
# import Fernet from cryptography.fernet import Fernet # Generate a key key = Fernet.generate_key() # Create a Fernet instance providing the generated key fernet = Fernet(key) # Encrypt the data data = b'Some secret data' encrypted_data = fernet.encrypt(data) # Decrypt the data decrypted_data = fernet.decrypt(encrypted_data) print(f"Decrypted text: {decrypted_data.decode()}")
Nota untuk pemula: kunci diperlukan semasa menyulitkan dan menyahsulit data, jadi anda tidak boleh menjana setiap kali kunci baharu. Selepas menyulitkan data, anda perlu menyimpan kunci, tetapi kerana ia adalah sesuatu yang membolehkan anda menyahsulit data, ingat untuk menyimpannya dengan cara yang selamat!
Kunci yang dijana dalam contoh di atas terdiri daripada bait rawak. Kekunci sedemikian adalah sangat selamat, walau bagaimanapun selalunya anda memerlukan penyulitan anda berdasarkan kata laluan - dengan kata laluan yang saya maksudkan beberapa frasa yang mudah difahami oleh manusia dan disediakan secara dinamik oleh pengguna sebagai input. Di bawah anda boleh menemui kod Python yang menunjukkan cara mendapatkan kata laluan daripada pengguna sebagai input dan cara mengubahnya menjadi kunci penyulitan:
# import utility for Base64 encoding import base64 # import Fernet from cryptography.fernet import Fernet # import getpass for secure input reading from getpass import getpass # read plain text password plain_text_password: str = getpass(prompt='Password: ') # Fernet requires 32 byte key, so the password also must have 32 characters if len(plain_text_password) != 32: raise RuntimeError(f'Password length must be equal 32!') # Encode plain text password to ASCII bytes password_ascii: bytes = plain_text_password.encode('ascii') # Fernet requires key to be url-safe base64-encoded key: bytes = base64.urlsafe_b64encode(password_ascii) # Create a Fernet instance providing the generated key fernet = Fernet(key) # Encrypt the data data = b'Some secret data' encrypted_data = fernet.encrypt(data) # Decrypt the data decrypted_data = fernet.decrypt(encrypted_data) print(f"Decrypted text: {decrypted_data.decode()}")
Nota untuk lanjutan: pikoTutorial ini memfokuskan pada cara menggunakan Fernet untuk penyulitan simetri, jadi ia memudahkan penciptaan kunci penyulitan. Dalam amalan, apabila anda perlu mencipta kunci penyulitan daripada kata laluan yang disediakan pengguna, anda harus menggunakan Fungsi Terbitan Utama seperti PBKDF2HMAC.
Atas ialah kandungan terperinci Penyulitan data simetri dengan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!