Hoe om data in Python te enkripteer en te ontsyfer met behulp van Cryptography Library

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.




Enkripteer data in Python

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.

Sleutel genereer

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.


Nota:U moet hierdie sleutel op 'n veilige plek bewaar. As u die sleutel verloor, kan u nie die data wat met hierdie sleutel geënkripteer is, ontsyfer nie.

Laai die sleutel

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()

Enkripteer 'n boodskap

Nou is ons gereed om 'n boodskap te enkripteer. Dit is 'n drie-stap proses:

  • 1 - kodeer die boodskap
  • 2 - initialiseer die Fernet-klas
  • 3 - stuur die gekodeerde boodskap na encrypt() metode

kodeer die boodskap:

message = 'message I want to encrypt'.encode()

inisieer die Fernet-klas:


f = Fernet(key)

enkripteer die boodskap:

encrypted_message = f.encrypt(message)

Volledige kode Voorbeeld

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='

Ontsyfer data in Python

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