Python İle Dosya Şifreleme (Açıklamalı)

1wexter1

Katılımcı Üye
24 Eyl 2021
919
649
Uzayda1yer
*********************************
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:
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İ
rdqkmap.png
---------------
7nim5vo.png

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.

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. :giggle:
***************************************************************
 
Son düzenleme:

big.hunter.wolf

Yeni üye
12 May 2023
28
8
Guzel bir konu gercekten, tesekkurler. Ama ben biseyi anlamadim, cryptography hakkinda pek bir bilgim yok fakat decrypt islemini nasil gerceklestiriyor?
Yani cryptosifreledigi dosyayi hatirladigi icinmi cozebiliyor yoksa dosyayi tanimadan cozebilme ozelligi varmi?
 

Turqut0

Yeni üye
20 Mar 2022
43
6
*********************************
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:
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İ
rdqkmap.png
---------------
7nim5vo.png

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.

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. :giggle:
***************************************************************
emeyine saglik
 

1wexter1

Katılımcı Üye
24 Eyl 2021
919
649
Uzayda1yer
Guzel bir konu gercekten, tesekkurler. Ama ben biseyi anlamadim, cryptography hakkinda pek bir bilgim yok fakat decrypt islemini nasil gerceklestiriyor?
Yani cryptosifreledigi dosyayi hatirladigi icinmi cozebiliyor yoksa dosyayi tanimadan cozebilme ozelligi varmi?
Öncellikle teşekkür ederim. soruna gelecek olursak kriptografi de belirli bir algoritmaya göre işlemler yapılıyor ve onun sonucunda ortaya şifrelenmiş veri elde ediyoruz ve onu decrypt etmek için encryptte kullandığımız algoritmanın aynısını ters mantık ile kullanıyoruz.
Buna binary üzerinden örnek vereyim daha çok kafana yatacağını düşünüyorum.

Örnek:
Encode ---> a = 01100001 (ASCII tablosuna göre)
Decode ---> 01100001 = a
yani demek istediğim şey veri farklı bir şeye dönüşmedi yine aynı sadece encode ederken algoritmadan tam tersi işlemler ile geçti ve şifre deşifre olmuş oldu(bu arada bazı şifrelemelrde encode edilmiş şifreler decode edilemez onların algoritması farklıdır yani şifreleniyor fakat çözülemiyor)
Eğer binary mantığını anlamak istersen şu konuma bakabilrsin detaylı şekilde açıklamaya çalıştım orada ---> PYTHON BINARY DECODE VE ENCODE


Teşekkür ederim.
 

'Anka

Basın&Medya Ekibi Kıdemli
8 Eyl 2021
3,198
2,358
.

Bu yazı, Python programlama dilini kullanarak dosya şifreleme işlemi hakkında açıklayıcı bilgiler içeriyor. Ayrıca, şifrelemenin neden gerektiği, şifrelemenin basit bir yöntemi ve Python programlama dili kullanarak dosya şifreleme işlemine nasıl başlanılacağı hakkında bilgiler verilmiş. Verilen kod örnekleri sayesinde okuyucular, Python diliyle dosya şifreleme işlemlerini gerçekleştirebilecekleri bir temel bilgiye sahip olacaklardır diye düşünüyorum. Overall olarak, iyi bir bilgi kaynağı olabilecek bu yazı, Python programlama dilinde dosya şifreleme işlemlerini öğrenmek isteyenler için yararlı olacaktır. Eline sağlık.
 

Muslukcu

Katılımcı Üye
17 Kas 2021
699
262
Tesisat dükkanı
*********************************
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:
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İ
rdqkmap.png
---------------
7nim5vo.png

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.

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. :giggle:
***************************************************************
Elinize sağlık
 

Arenklord

Uzman üye
9 Mar 2023
1,296
669
Orta doğu
*********************************
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:
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İ
rdqkmap.png
---------------
7nim5vo.png

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.

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. :giggle:
***************************************************************
Eline emeğine sağlık
 

AnonimYazılımcı

Yeni üye
3 Nis 2023
22
2
Bir Python Programı Yaptım Gereken Kütüphaneleri Yüklüyor. Yapma Sebebim İse Bazı AntiVirüs Programları Python'un pip İsimli Paket Yükleyicisini Kurmasına İzin Vermiyor Bende Bu Sorunu Çözdüm Tek Yapmamız Gereken Şu Oluyor "-m pip instal cryptography" Bende Bu Kodu Yazmak İçin Python Standart Kütüphanesi Olan "subprocess" İsimli Kütüphaneyi Kullandım
 

kelvinxry

Katılımcı Üye
23 Ara 2022
364
104
*********************************
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:
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İ
rdqkmap.png
---------------
7nim5vo.png

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.

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. :giggle:
***************************************************************
Elinize sağlık.
 

1wexter1

Katılımcı Üye
24 Eyl 2021
919
649
Uzayda1yer
Teşekktürler
Eline emeğine sağlık
Teşekkürler
Bir Python Programı Yaptım Gereken Kütüphaneleri Yüklüyor. Yapma Sebebim İse Bazı AntiVirüs Programları Python'un pip İsimli Paket Yükleyicisini Kurmasına İzin Vermiyor Bende Bu Sorunu Çözdüm Tek Yapmamız Gereken Şu Oluyor "-m pip instal cryptography" Bende Bu Kodu Yazmak İçin Python Standart Kütüphanesi Olan "subprocess" İsimli Kütüphaneyi Kullandım
sorunuzu tam olarak anlayamadım eğer sorunuz bu konu ile bağımsız ise THT yardım merkezine konu açabilirisiniz.
eğer bu konu ile ilgiliyse biraz daha açar mısınız soruyu?

Elinize sağlık.
Teşekkürler
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.