Şifre saklayan dosyalar

Mesala python ile yazdığımız bir programın girişinde şifre istiyor, bu şifreyi programın kendi içi hariç başka bir dosyada nasıl gizlenebilir? veya böyle bir dosya varmı?

1 Beğeni

Bir veritabanında saklayabilirsiniz. Tabi ki saklarken güvenli bir şekilde saklamak gerekiyor. Çünkü veritabanları okunabilirdir. O zaman ne yapmak lazım? Tabi ki şifrenin özet(hash) halini saklamak lazım. Özet fonksiyonları nedir?

Yani kısaca hangi uzunlukta şifreniz olursa olsun, hash fonksiyonları bunu sabit uzunluklu bir hale getirir. Örneğin md5 fonksiyonu girilen her uzunluktaki şifreyi 32 karaktere indirger. İşin içinde güvenlik kısmı da var, ancak konumuz bu değil.

Peki bunu Python ile nasıl yapabiliriz? Python içerisinde hashlib modülü bulunmakta. Bu modül ile md5,sha1,sha224,sha256,sha384,sha512 hash fonksiyonlarını kullanabilirsiniz. Bir tanesini kullanalım

from hashlib import sha256

sifre = "abc1234"

sonuc = sha256(sifre).hexdigest()

print(sonuc)

Peki, bu kadar şeyi neden anlattın diyebilirsiniz. Şunu yapmanızı istedim. Şifrenizin özet halini veritabanında tutun. Kullanıcı şifreyi girince, girilen şifrenin özetini alın ve veritabanındaki özet ile karşılaştırın. Eğer eşit ise demek ki şifre doğru girilmiştir. Hem kimse özete bakarak nasıl bir şifre olduğunu tahmin edemez. Böylece güvenli saklanmış olur. Bir örnek program

from hashlib import sha256

ozet = "36f583dd16f4e1e201eb1e6f6d8e35a2ccb3bbe2658de46b4ffae7b0e9ed872e" # abc1234 özeti

girilen = input("Şifreyi girin: ")
girilen_ozet = sha256(girilen.encode("utf-8")).hexdigest()

if(girilen_ozet == ozet):
    print("şifre doğru")
else:
    print("Şifre yanlış")

Kullanıcı abc1234 girdiğinde şifre doğru yazacaktır.

3 Beğeni

Pickle modülü ile bir dosyaya kaydedebilirsin. Kaydedeceğin veriyi @coderistan’ın dediği gibi hashlib ile şifrelersin sonra dosyaya aktarırsın. Çok güvenli olmasa da ideal bir yöntem.

1 Beğeni