*********************************
Uzun bir zaman sonra tekrardan merhabalar THT Ailesi
uzun zamandır konu açmıyordum yoğunluk sebebiyle ve bugün Python kullanarak nasıl dosya şifreleyebileceğimizi
göstereceğim ilk önce kodları paylaşıp ardından her satır kodu açıklayacağım.
*********************************
DOSYA ŞİFRELEME:Uzun bir zaman sonra tekrardan merhabalar THT Ailesi
uzun zamandır konu açmıyordum yoğunluk sebebiyle ve bugün Python kullanarak nasıl dosya şifreleyebileceğimizi
göstereceğim ilk önce kodları paylaşıp ardından her satır kodu açıklayacağım.
*********************************
Python:
from cryptography.fernet import Fernet
import os
def dosya_sifrele(dosya_adi, sifreleme_anahtari):
try:
with open(dosya_adi, 'rb') as dosya:
icerik = dosya.read()
sifreleyici = Fernet(sifreleme_anahtari)
sifreli_icerik = sifreleyici.encrypt(icerik)
with open(dosya_adi, 'wb') as dosya:
dosya.write(sifreli_icerik)
print("Dosya başarıyla şifrelendi.")
except FileNotFoundError:
print("Dosya bulunamadı.")
dosya_adi = r'C:\Users\user\Desktop\a\seya.txt'
sifreleme_anahtari = Fernet.generate_key()
dosya_sifrele(dosya_adi, sifreleme_anahtari)
1.Satır ---> from cryptography.fernet import Fernet: şifrelerken kullınacağamız kütüphane( terminalden " pip install cryptography " şeklinde indirebilirsiniz)
2.Satır ---> import os: dosya işlemler gerektiği için os modülümüzü import ediyoruz.(bu kütüphane zaten python ile kurulu gelir yani yüklemeniz gerekmez)
6.Satır ---> def dosya_sifrele: Dosyayı şifrelemek için bir fonksiyon oluşturuyorz
7.Satır ---> Try-expect bloğu: Burada fonksiyon içerisinde çalışırken içeriisnde bir hata alırsak kod düzgün şekilde çalışmayacaktır eğer beklendik bir hata alırsak kod hata vermeden 1dosya bulunamadı deyip programı sonlandıracaktır.
8-9.Satır ---> with open(dosya_adi, 'rb') as dosya --> dosya okunur ve icerik adlı değişkene aktarılır. Dosya 'rb' modunda açıldığından verileri binary (ikili) olarak okur. (rb = read binary)
11-12.Satır ---> Fernet sınıfından bir şifreleyici nesnesi oluşturulur ve sifreleme_anahtari ile başlatılır. (Eğer fernet ile ilgi daha fazla bilgi edinmek isterseniz Python-fernet) sifreleyici.encrypt(icerik) ifadesiyle icerik (dosyanın içeriği) şifrelenir ve sifreli_icerik adlı değişkene atanır.
14-15.Satır ---> Burada şifreledikten sonra dosya yeniden açıyoruz ve dosya.write(sifreli_icerik) ile şifrelenmiş verilerimizi dosyaya yazdırıyoruz.
22-23.Satır ---> Burada şifrelemek istediğim dosyayı tanımlıyoruz "dosya_adı" ile (bu arada benim dosya dizisi girerken neden başta "r" eklediğimi merak ediyorsanız bunun sebebini tam olarak bende bilmiyorum ama "r"'yi eklemediğimde hata veriyor yani onu ezbere yapıyorum diyebilirim ve bilen biri var ise açılarsa çok sevinirim.) ve sonrasında "sifreleme_anahtarı" adında bir değişken atıyoruz ve bu değişken Fernet.generate_key() yöntemi ile , Fernet şifreleme algoritması için bir anahtar oluşturuyoruz.
Ayrıntı: Fernet.generate_key() yöntemi Fernet şifreleme algoritması için bir anahtar oluşturur. Anahtar rastgele 32 byte (256 bit) uzunluğunda bir dizedir. generate_key() yöntemi her çağrıldığında farklı bir anahtar oluşturulur. Bu da her şifreleme işlemi için farklı bir anahtar kullanılmasını sağlar.
Bu projemizde Fernet.generate_key() yöntemi ile rastgele bir anahtar oluşturuluyor ve sifreleme_anahtari değişkenine atanıyor. Bu anahtar, hem dosya_sifrele fonksiyonunda hem de birazdan decryot etmek için oluşturacağımız dosya_coz fonksiyonunda da kullanacağız. Evet daha sonrasında fonksiyonumuzu çalıştıryoruz ve sonuca bakıyoruz;
ŞİFRESİZ HALİ --------------------------------------> ŞİFRELENMİŞ HALİ
---------------


gördüğünüz gibi aslında sadece veri şifreliyoruz ve şimdi bu şifrelinen metni geri eski haline getirelim yani şimdi decode
edeceğimiz kısmı göstereceğim eğer şifrelemeyi anladıysanızdecode etme kısmını çok daha kolay anlarsınız
fazla uzatmadan decode etme işlemine gelelim.
edeceğimiz kısmı göstereceğim eğer şifrelemeyi anladıysanızdecode etme kısmını çok daha kolay anlarsınız
fazla uzatmadan decode etme işlemine gelelim.
DECODE:
Python:
def dosya_coz(dosya_adi, sifreleme_anahtari):
try:
with open(dosya_adi, 'rb') as dosya:
icerik = dosya.read()
sifreleyici = Fernet(sifreleme_anahtari)
cozulmus_icerik = sifreleyici.decrypt(icerik)
with open(dosya_adi, 'wb') as dosya:
dosya.write(cozulmus_icerik)
print("Dosya başarıyla çözüldü.")
except FileNotFoundError:
print("Dosya bulunamadı.")
dosya_adi = r'C:\Users\user\Desktop\a\seya.txt'
sifreleme_anahtari = Fernet.generate_key()
dosya_coz(dosya_adi, sifreleme_anahtari)
Evet gördüğünüz üzere encode etme işlemi ile arasında neredeyse hiçbir fark yok tek fark değişkenler ve 6.satırda encrypt yerine decrypt yazıyoruz ki bildiğiniz üzere de decrypt de deşifreliyor.
Bunu açıklamayacağım çünkü her şey önceki aşama ile aynısı tek farkta dediğim gibi 6.satırda ki decrypt
NOT: 3-4 cümle de ChatGPT3.0'dan yararlandım sebebi ise 11-12.satırdaki kodları açıklarken nasıl basitleştirip açıklayacağımı bilemedim ve bunu basitleştirip açıklamasını istedim.
***************************************************************
Buraya kadar okuduğunuz için Teşekkür ederim.
Bu yazıda sizleri sıkmadan akıcı şekilde Python kullanarak Nasıl dosya şifreleyebileceğiniz göstermek istedim umarım iyi açıklayabilmişimdir ve eğer aklınızda sorularınız varsa
veya eksik olduğumu düşündüğünüz yer var ise lütfen belirtin.
***************************************************************
Bunu açıklamayacağım çünkü her şey önceki aşama ile aynısı tek farkta dediğim gibi 6.satırda ki decrypt
NOT: 3-4 cümle de ChatGPT3.0'dan yararlandım sebebi ise 11-12.satırdaki kodları açıklarken nasıl basitleştirip açıklayacağımı bilemedim ve bunu basitleştirip açıklamasını istedim.
***************************************************************
Buraya kadar okuduğunuz için Teşekkür ederim.
Bu yazıda sizleri sıkmadan akıcı şekilde Python kullanarak Nasıl dosya şifreleyebileceğiniz göstermek istedim umarım iyi açıklayabilmişimdir ve eğer aklınızda sorularınız varsa
veya eksik olduğumu düşündüğünüz yer var ise lütfen belirtin.
***************************************************************
Son düzenleme: