Hvernig á að dulkóða og umrita gögn í Python með dulmálsbókasafni

Í þessari kennslu munt þú læra hvernig á að dulkóða og afkóða gögn, t.d. textastrengur sem notar dulmálsbókasafnið í Python.

Dulkóðun er ferlið við að kóða upplýsingar þannig að aðeins viðurkenndir aðilar hafi aðgang að þeim. Það gerir okkur kleift að vernda gögn sem við viljum ekki að hver sem er sjái eða hafi aðgang að.

Tengt:


Í þessu dæmi munum við nota samhverfa dulkóðun, sem þýðir að sami lykill og við notuðum til að dulkóða gögn, er einnig nothæfur fyrir dulkóðun.

Dulmálssafnið sem við notum hér er byggt ofan á AES reiknirit.




Dulkóða gögn í Python

Í fyrsta lagi verðum við að setja dulmálsbókasafnið upp:

pip3 install cryptography

Frá dulmálsbókasafninu þurfum við að flytja inn Fernet og byrjaðu að búa til lykil - þessi lykill er nauðsynlegur til samhverfrar dulkóðunar / dulkóðunar.

Búðu til lykil

Til að búa til lykil köllum við generate_key() aðferð:

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)

Við þurfum aðeins að framkvæma ofangreinda aðferð einu sinni til að búa til lykil.


Athugið:Þú verður að geyma þennan lykil á öruggum stað. Ef þú tapar lyklinum geturðu ekki dulkóðað gögnin sem voru dulkóðuð með þessum lykli.

Hlaðið lyklinum

Þegar við höfum búið til lykil, verðum við að hlaða lyklinum í aðferð okkar til að dulkóða gögn:

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

Dulkóða skilaboð

Nú erum við tilbúin að dulkóða skilaboð. Þetta er þriggja þrepa ferli:

  • 1 - umrita skilaboðin
  • 2 - frumstilla Fernet bekkinn
  • 3 - sendu dulkóðaða skilaboðin til encrypt() aðferð

umrita skilaboðin:

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

frumstilla Fernet bekkinn:


f = Fernet(key)

dulkóða skilaboðin:

encrypted_message = f.encrypt(message)

Dæmi um fullan kóða

Hér að neðan er fullkomið dæmi um dulkóðun skilaboða í 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')

Framleiðsla:

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

Afkóða gögn í Python

Til að afkóða skilaboðin hringjum við bara í decrypt() aðferð frá Fernet bókasafn. Mundu að við þurfum líka að hlaða lykilinn líka, vegna þess að lykillinn er nauðsynlegur til að afkóða skilaboðin.


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

Framleiðsla:

encrypt this message