Kriptografi (cryptography) başkaları tarafından okunmaması gereken hassas verilerin şifrelenmesi veya şifrelenmiş verilerin çözülmesi ile ilgilenir. Python ise verileri kolayca şifrelemek veya çözmek için cryptography paketini destekler.
cryptography paketinin Fernet modülü kullanılarak düz bir metin şifreli metine ya da şifreli bir metin düz bir metine çevrilebilir.
Fernet modülü, şifrelenen verilerin daha fazla işlenemeyeceğini veya anahtar olmadan okunamayacağını garanti eder.
Metodlar
generate_key()
-> yeni bir fernet anahtarı oluşturur. Anahtar, şifreli metnin şifresini çözmek için en önemli bileşen olduğu için güvende tutulmalıdır. Anahtar kaybolursa, kullanıcı artık mesajın şifresini çözemez. Ayrıca, bir davetsiz misafir veya bilgisayar korsanı anahtara erişirse, yalnızca verileri okuyamaz, aynı zamanda verileri taklit edebilir.
encrypt(data)
-> parametre olarak atanan verileri şifreler.
decrypt(token, ttl = None)
-> parametre olarak aktarılan Fernet belirtecinin şifresini çözer. Başarılı bir şifre çözmede, sonuç olarak orijinal düz metin elde edilir, aksi takdirde bir istisna atılır.
Örnek Program
İlk olarak cryptography paketini indirmemiz gerekmekte.
pip install cryptography
Python kodu:
# Fernet modülü cryptography paketinden içe aktarılır.
from cryptography.fernet import Fernet
# anahtar oluşturulur
key = Fernet.generate_key()
# anahtarın değeri bir değişkene atanır
f = Fernet(key)
# düz metin şifreli metne dönüştürülür
token = f.encrypt(b"Kod Muhendisleri Toplulugu")
# şifreli metni yazdırır
print("Şifreli metin:\n",token)
# şifreli metnin şifresini çözer
d = f.decrypt(token)
# düz metni yazdırır
# baştaki "b'"yi silmek için decode() kullandık
print("\n\nDüz metin:\n",d)
Çıktı:
Şifreli metin:
b'gAAAAABfpbrqoShhiQy1uZojT1tooAEibkItNq6bxJG8znF3pxTXb0F_vmFsUBnb87dDltXoTF-DqQWpa5ummABmPJPFb-YbftYXSsXhfYENTA1UdyWkBUs='
Düz metin:
b'Kod Muhendisleri Toplulugu'
Çıktıdan da gördüğümüz gibi mesajın önünde bayt formatını gösteren bir "b" harfi vardır. Bu, decode()
metodu kullanılarak kaldırılabilir. Örnek olarak kullanalım.
Python kodu:
# Fernet modülü cryptography paketinden içe aktarılır.
from cryptography.fernet import Fernet
# anahtar oluşturulur
key = Fernet.generate_key()
# anahtarın değeri bir değişkene atanır
f = Fernet(key)
# düz metin şifreli metne dönüştürülür
token = f.encrypt(b"Kod Muhendisleri Toplulugu")
# şifreli metni yazdırır
print("Şifreli metin:\n",token)
# şifreli metnin şifresini çözer
d = f.decrypt(token)
# düz metni yazdırır
# baştaki "b'"yi silmek için decode() kullandık
print("\n\nDüz metin:\n",d.decode())
Çıktı:
Şifreli metin:
b'gAAAAABfpbsOs0vm3pdeykdXwG_7edYv4GzI35gXIrn2QY6g7pc9TSuqIeuFqh_6e25bIIz6bQ_yd0mycWlp9FDF-4VHTMEXuJoZRSF0CpZhohaetcyvrzo='
Düz metin:
Kod Muhendisleri Toplulugu
Instagram
https://www.instagram.com/p/CHX6ctIAwZo/
Kaynak: GeeksforGeeks