Mar as urrainn dhut dàta a chrioptachadh agus a dhì-chrioptachadh ann am Python a ’cleachdadh Leabharlann Cryptography

San oideachadh seo ionnsaichidh tu mar as urrainn dhut dàta a chrioptachadh agus a dhì-chrioptachadh, m.e. sreang de theacsa a ’cleachdadh an leabharlann criptearachd ann am Python.

Is e crioptachadh am pròiseas airson fiosrachadh a chòdachadh ann an dòigh nach fhaigh ach pàrtaidhean ùghdarraichte cothrom air. Leigidh e leinn dàta a dhìon gu tèarainte nach eil sinn ag iarraidh air duine sam bith fhaicinn no faighinn thuige.

Co-cheangailte:


San eisimpleir seo, bidh sinn a ’cleachdadh crioptachadh co-chothromach, a tha a’ ciallachadh an aon iuchair a chleachd sinn airson dàta a chrioptachadh, cuideachd ri chleachdadh airson dì-chrioptachadh.

Tha an leabharlann cryptography a bhios sinn a ’cleachdadh an seo air a thogail air mullach algorithm AES.




Cuir a-steach dàta ann am Python

An toiseach, feumaidh sinn an leabharlann criptearachd a stàladh:



pip3 install cryptography

Bhon leabharlann crioptòlais, feumaidh sinn toirt a-steach Fernet agus tòisich a ’gineadh iuchair - tha feum air an iuchair seo airson crioptachadh / dì-chrioptachadh co-chothromach.

Cruthaich iuchair

Gus iuchair a ghineadh, canaidh sinn an generate_key() modh:

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)

Cha leig sinn a leas ach an dòigh gu h-àrd a chuir an gnìomh gus iuchair a ghineadh.


Nota:Feumaidh tu an iuchair seo a chumail ann an àite sàbhailte. Ma chailleas tu an iuchair, cha bhith e comasach dhut an dàta a chaidh a chrioptachadh leis an iuchair seo a dhì-chrioptachadh.

Luchdaich an iuchair

Aon uair ‘s gu bheil sinn air iuchair a ghineadh, feumaidh sinn an iuchair san dòigh againn a luchdachadh gus dàta a chrioptachadh:

def load_key():
'''
Loads the key named `secret.key` from the current directory.
'''
return open('secret.key', 'rb').read()

Cuir a-steach teachdaireachd

A-nis, tha sinn deiseil airson teachdaireachd a chrioptachadh. Is e pròiseas trì ceumannan a tha seo:

  • 1 - còdachadh an teachdaireachd
  • 2 - cuir a-steach an clas Fernet an toiseach
  • 3 - cuir seachad an teachdaireachd a chaidh a chòdachadh gu encrypt() modh

còdachadh na teachdaireachd:

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

a ’tòiseachadh clas Fernet:


f = Fernet(key)

crioptachadh an teachdaireachd:

encrypted_message = f.encrypt(message)

Eisimpleir làn chòd

Gu h-ìosal tha làn eisimpleir obrach de bhith a ’cuairteachadh teachdaireachd ann am python:

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

Toradh:

b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4='

Dì-dhùmhlaich dàta ann am Python

Gus an teachdaireachd a dhì-chrioptachadh, tha sinn dìreach a ’gairm an decrypt() modh bhon Fernet leabharlann. Cuimhnich, feumaidh sinn an iuchair a luchdachadh cuideachd, oir tha feum air an iuchair gus an teachdaireachd a dhì-chrioptachadh.


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

Toradh:

encrypt this message