Resim

Güvenli Şifre Oluşturucu

Güvenli Şifre Oluşturucu

Bu projede, kullanıcının isteklerine göre (uzunluk, içerik) tamamen rastgele ve güçlü şifreler üreten bir Python programı yazacağız. Bu sayede, hem pratik bir araç edinmiş olacağız hem de Python'daki modül kullanımı, listeler ve döngüleri en verimli şekilde nasıl kullanacağımızı göreceğiz.

Hadi başlayalım ve siber güvenliğin ilk adımlarını Python ile atalım!

💻 Python Kodu: Güvenli Şifre Oluşturucu

import random
import string # Harf ve rakam setlerini kolayca almak için
# 1. Tanımlamalar: Kullanılacak tüm karakter setlerini tanımla
KUCUK_HARFLER = string.ascii_lowercase
BUYUK_HARFLER = string.ascii_uppercase
RAKAMLAR = string.digits
SEMBOLLE = string.punctuation# ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
def sifre_olustur(uzunluk):
    """
    Belirtilen uzunlukta, kullanıcıdan alınan kriterlere uygun şifre oluşturur.
    """
    # 2. Kullanıcının hangi karakter tiplerini istediğini sor
    kullanilacak_karakterler = ""
    print("-" * 50)
    print("Şifre Oluşturucuya Hoş Geldiniz.")
    print("-" * 50)    
    # Kullanıcıdan onay al
    kucuk_h = input("Küçük harfler kullanılsın mı? (e/h): ").lower() == 'e'
    buyuk_h = input("Büyük harfler kullanılsın mı? (e/h): ").lower() == 'e'
    rakamlar_k = input("Rakamlar kullanılsın mı? (e/h): ").lower() == 'e'
    semboller_k = input("Semboller kullanılsın mı? (e/h): ").lower() == 'e'
    # 3. Şifre havuzunu oluştur
    if kucuk_h:
        kullanilacak_karakterler += KUCUK_HARFLER
    if buyuk_h:
        kullanilacak_karakterler += BUYUK_HARFLER
    if rakamlar_k:
        kullanilacak_karakterler += RAKAMLAR
    if semboller_k:
        kullanilacak_karakterler += SEMBOLLE       
    # Eğer hiçbir şey seçilmezse varsayılan olarak harf kullan
    if not kullanilacak_karakterler:
        print("En az bir karakter seçmelisiniz. Varsayılan olarak küçük harfler kullanılıyor.")
        kullanilacak_karakterler = KUCUK_HARFLER
    # 4. Şifreyi Oluştur
    olusturulan_sifre = ""
    for _ in range(uzunluk):
        # random.choice(): Belirtilen karakter setinden rastgele bir öğe seçer
        rastgele_karakter = random.choice(kullanilacak_karakterler)
        olusturulan_sifre += rastgele_karakter       
    return olusturulan_sifre
# Ana Program Çalıştırma Bloğu
if __name__ == "__main__":
    while True:
        try:
            # Şifre uzunluğunu kullanıcıdan al
            sifre_uzunlugu = int(input("\nOluşturulacak şifre uzunluğunu girin (Örn: 12): "))
            if sifre_uzunlugu <= 0:
                print("Uzunluk pozitif bir tam sayı olmalıdır.")
                continue
            break
        except ValueError:
            print("Geçersiz giriş. Lütfen bir sayı girin.")
            
    yeni_sifre = sifre_olustur(sifre_uzunlugu)
    print("\n" + "=" * 50)
    print(f"OLUŞTURULAN ŞİFRENİZ: {yeni_sifre}")
    print("=" * 50)

📝 Kodun Adım Adım Açıklaması (Blog İçeriği)

Bu projenin gücü, Python'daki hazır modülleri alıp kendi mantığımızla birleştirmekte yatıyor.

Adım 1: Modülleri İçe Aktarma (import)

import random
import string
  • import random: Rastgelelik için temel araçtır. Kullanacağımız ana fonksiyon random.choice() olacak. Bu, bir listeden veya karakter dizisinden rastgele bir öğe seçmemizi sağlar.

  • import string: Bu, büyük/küçük harf setlerini, rakamları ve sembolleri bize hazır string'ler olarak sunan çok kullanışlı bir modüldür. (Örneğin, tüm küçük harfleri tek tek yazmak yerine string.ascii_lowercase kullanırız.)

Adım 2: Karakter Havuzunu Oluşturma

# 3. Şifre havuzunu oluştur
if kucuk_h:
    kullanilacak_karakterler += KUCUK_HARFLER
# ...
  • Kullanıcıya sorulan her "e" (evet) yanıtı için, ilgili karakter setini (KUCUK_HARFLER, RAKAMLAR vb.) ana şifre havuzumuz olan kullanilacak_karakterler string'ine ekliyoruz.

  • Bu sayede, kullanıcı isterse sadece rakamlardan oluşan, isterse tüm karakter türlerini içeren büyük ve tek bir havuz elde ediyoruz.

Adım 3: Şifreyi Döngüyle Çekme

for _ in range(uzunluk):
    rastgele_karakter = random.choice(kullanilacak_karakterler)
    olusturulan_sifre += rastgele_karakter
  • for _ in range(uzunluk): Bu döngü, belirlediğimiz uzunluk sayısı kadar (örneğin 12 kez) çalışır. Buradaki _ sembolü, döngü sayacını kullanmayacağımızı belirtmenin yaygın bir yoludur.

  • Döngünün her adımında:

    1. random.choice(kullanilacak_karakterler) ile o anki karakter havuzumuzdan bir tane rastgele karakter seçilir.

    2. Seçilen bu karakter, olusturulan_sifre string'inin sonuna eklenir (+=).

Döngü bittiğinde, elimizde tam olarak istenen uzunlukta, rastgele karakterlerden oluşan güçlü bir şifre olur.

Ek Geliştirme Önerisi

  • Zorunlu İçerik Garantisi: Daha profesyonel bir şifre oluşturucu için, havuzu oluşturduktan sonra, oluşturulan şifrenin en az bir küçük harf, en az bir rakam vb. içerdiğinden emin olmak için ek bir kontrol ekleyebilirsiniz!

Tebrikler, artık Python ile kendi güvenli şifrelerinizi üretebilirsiniz!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?