Ինչպես գաղտնագրել և վերծանել տվյալները Python- ում ՝ օգտագործելով գաղտնագրման գրադարան

Այս ձեռնարկում դուք կսովորեք, թե ինչպես կոդավորել և վերծանել տվյալները, օրինակ. տեքստի տող ՝ օգտագործելով Python- ի ծածկագրության գրադարանը:

Կոդավորումը տեղեկատվության կոդավորման գործընթացն է այնպես, որ միայն լիազորված կողմերը կարողանան մուտք գործել դրան: Այն թույլ է տալիս մեզ ապահով կերպով պաշտպանել այն տվյալները, որոնք մենք չենք ցանկանում, որ որևէ մեկը տեսնի կամ մուտք ունենա:

Առնչվող:


Այս օրինակում մենք կօգտագործենք սիմետրիկ ծածկագրում, ինչը նշանակում է, որ նույն բանալին, որը մենք օգտագործել ենք տվյալների գաղտնագրման համար, օգտագործելի է նաև վերծանման համար:

Գաղտնագրության գրադարանը, որը մենք օգտագործում ենք այստեղ, կառուցված է AES ալգորիթմի վերևում:




Գաղտնագրեք տվյալները Python- ում

Նախ, մենք պետք է տեղադրենք գաղտնագրման գրադարանը.

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

Գաղտնագրել հաղորդագրությունը

Այժմ մենք պատրաստ ենք ծածկագրել հաղորդագրություն: Սա երեք քայլ գործընթաց է.

  • 1 - կոդավորեք հաղորդագրությունը
  • 2 - նախնականացնել Fernet դասը
  • 3 - փոխանցել կոդավորված հաղորդագրությունը 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='

Վերծանել տվյալները Python- ում

Հաղորդագրությունը վերծանելու համար մենք պարզապես զանգահարում ենք 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