Í þ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.
Í 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.
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.
Þ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()
Nú erum við tilbúin að dulkóða skilaboð. Þetta er þriggja þrepa ferli:
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)
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='
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