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.
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.
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.
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()
A-nis, tha sinn deiseil airson teachdaireachd a chrioptachadh. Is e pròiseas trì ceumannan a tha seo:
encrypt()
modhcò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)
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='
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