Այս ձեռնարկում դուք կսովորեք, թե ինչպես կոդավորել և վերծանել տվյալները, օրինակ. տեքստի տող ՝ օգտագործելով Python- ի ծածկագրության գրադարանը:
Կոդավորումը տեղեկատվության կոդավորման գործընթացն է այնպես, որ միայն լիազորված կողմերը կարողանան մուտք գործել դրան: Այն թույլ է տալիս մեզ ապահով կերպով պաշտպանել այն տվյալները, որոնք մենք չենք ցանկանում, որ որևէ մեկը տեսնի կամ մուտք ունենա:
Առնչվող:
Այս օրինակում մենք կօգտագործենք սիմետրիկ ծածկագրում, ինչը նշանակում է, որ նույն բանալին, որը մենք օգտագործել ենք տվյալների գաղտնագրման համար, օգտագործելի է նաև վերծանման համար:
Գաղտնագրության գրադարանը, որը մենք օգտագործում ենք այստեղ, կառուցված է AES ալգորիթմի վերևում:
Նախ, մենք պետք է տեղադրենք գաղտնագրման գրադարանը.
pip3 install cryptography
Գաղտնագրության գրադարանից մեզ անհրաժեշտ է ներմուծել Fernet
և սկսեք ստեղն առաջացնել - այս բանալին պահանջվում է սիմետրիկ ծածկագրման / վերծանման համար:
Բանալին առաջացնելու համար մենք կոչում ենք generate_key()
մեթոդ:
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():
'''
Loads the key named `secret.key` from the current directory.
'''
return open('secret.key', 'rb').read()
Այժմ մենք պատրաստ ենք ծածկագրել հաղորդագրություն: Սա երեք քայլ գործընթաց է.
encrypt()
մեթոդծածկագրել հաղորդագրությունը.
message = 'message I want to encrypt'.encode()
սկզբնավորել Fernet դասը.
f = Fernet(key)
գաղտնագրել հաղորդագրությունը.
encrypted_message = f.encrypt(message)
Ստորև բերված է պիթոնում հաղորդագրության գաղտնագրման լրիվ աշխատանքային օրինակ.
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')
Արդյունք:
b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4='
Հաղորդագրությունը վերծանելու համար մենք պարզապես զանգահարում ենք decrypt()
մեթոդը Fernet
-ից գրադարան Հիշեք, որ մենք նաև պետք է բեռնենք բանալին, քանի որ բանալին անհրաժեշտ է հաղորդագրության վերծանման համար:
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=')
Արդյունք:
encrypt this message