In hierdie handleiding leer u hoe u data kan enkripteer en ontsyfer, bv. 'n string teks wat die kriptografiebiblioteek in Python gebruik.
Enkripsie is die proses van die kodering van inligting op so 'n manier dat slegs gemagtigde partye toegang daartoe het. Dit stel ons in staat om data veilig te beskerm wat ons nie wil hê dat net iemand moet sien of toegang daartoe kry nie.
Verwante:
In hierdie voorbeeld gebruik ons simmetriese kodering, wat beteken dat dieselfde sleutel wat ons gebruik het om data te enkripteer, ook vir ontsyfering gebruik kan word.
Die kriptografiebiblioteek wat ons hier gebruik, is bo-op AES-algoritme gebou.
Eerstens moet ons die kriptografiebiblioteek installeer:
pip3 install cryptography
Van die kriptografie-biblioteek moet ons Fernet
invoer en begin 'n sleutel te genereer - hierdie sleutel is nodig vir simmetriese kodering / dekripsie.
Om 'n sleutel te genereer, noem ons die generate_key()
metode:
from cryptography.fernet import Fernet def generate_key():
'''
Generates a key and save it into a file
'''
key = Fernet.generate_key()
with open('secret.key', 'wb') as key_file:
key_file.write(key)
Ons hoef die bostaande metode slegs een keer uit te voer om 'n sleutel te genereer.
Sodra ons 'n sleutel gegenereer het, moet ons die sleutel in ons metode laai om data te enkripteer:
def load_key():
'''
Loads the key named `secret.key` from the current directory.
'''
return open('secret.key', 'rb').read()
Nou is ons gereed om 'n boodskap te enkripteer. Dit is 'n drie-stap proses:
encrypt()
metodekodeer die boodskap:
message = 'message I want to encrypt'.encode()
inisieer die Fernet-klas:
f = Fernet(key)
enkripteer die boodskap:
encrypted_message = f.encrypt(message)
Hieronder is 'n volledige voorbeeld van die versleuteling van 'n boodskap in luislang:
from cryptography.fernet import Fernet def generate_key():
'''
Generates a key and save it into a file
'''
key = Fernet.generate_key()
with open('secret.key', 'wb') as key_file:
key_file.write(key) def load_key():
'''
Load the previously generated key
'''
return open('secret.key', 'rb').read() def encrypt_message(message):
'''
Encrypts a message
'''
key = load_key()
encoded_message = message.encode()
f = Fernet(key)
encrypted_message = f.encrypt(encoded_message)
print(encrypted_message) if __name__ == '__main__':
encrypt_message('encrypt this message')
Uitset:
b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4='
Om die boodskap te ontsyfer, noem ons net die decrypt()
metode vanaf die Fernet
biblioteek. Onthou, ons moet ook die sleutel laai, want die sleutel is nodig om die boodskap te ontsyfer.
from cryptography.fernet import Fernet def load_key():
'''
Load the previously generated key
'''
return open('secret.key', 'rb').read() def decrypt_message(encrypted_message):
'''
Decrypts an encrypted message
'''
key = load_key()
f = Fernet(key)
decrypted_message = f.decrypt(encrypted_message)
print(decrypted_message.decode()) if __name__ == '__main__':
decrypt_message(b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4=')
Uitset:
encrypt this message