Python: Rastgele Şifre Üretme

Python Rastgele Şifre Oluşturma

Python ile rastgele şifreler nasıl üretilir ona bakacağız. Bir kaç farklı yöntemi olsa da amacımız 8 karakterli büyük harf, küçük harf, rakam ve özel karakterlerden oluşan bir listeden rastgele karakterler alıp bunları birleştirmek.

Basit ve Güvenilmez Yöntem

Python
import random
kucuk_harfler = "qwertyuıopğüişlkjhgfdsazxcvbnmöç"
buyuk_harfler = "QWERTYUIOPĞÜİŞLKJHGFDSAZXCVBNMÖÇ"
rakamlar = "0123456789"
ozel_karakterler = "!@#$%^&*()"

karakterler = kucuk_harfler+buyuk_harfler+rakamlar+ozel_karakterler

i = 0
sifre=""
while i < 8:
	sifre = sifre+random.choice(karakterler)
	i+=1
print(sifre)
# Ekran Çıktısı

Rastgele Oluşturulmuş Şifreniz:  nnp6mzZv

Yukarıdaki kodun sıkıntısını görebilirsiniz. Tüm seriyi birleştirip içinden rastgele karakterler seçiyoruz. Burada herhangi bir seriden hiç karakter gelmeme şansıda var. Örneğin yukarıdaki çıktıda özel karakter bulunmuyor. Bu da istemediğimiz bir durumdur.

Daha Karışık Şifre Oluşturma Yöntemi

Aşağıdaki örnek ise daha fazla modifiye edilebilir ve sınırları çizilmesi gereken bir örnek. Sadece mantığını kavramak adına yapılmış.

Python
import random

# Karakter dizilerimizi belirliyoruz
kucuk_harfler = "qwertyuıopğüişlkjhgfdsazxcvbnmöç"
buyuk_harfler = "QWERTYUIOPĞÜİŞLKJHGFDSAZXCVBNMÖÇ"
rakamlar = "0123456789"
ozel_karakterler = "!@#$%^&*()"

# Kullanıcıdan hangi karakterlerden kaçar tane olmasını istiyoruz
kucuk_harf_sayisi = int(input("Kaç Küçük Harf Olsun: "))
buyuk_harf_sayisi = int(input("Kaç Büyük Harf Olsun: "))
rakam_sayisi = int(input("Kaç Rakam Olsun: "))
ozel_karakter_sayisi = int(input("Kaç Özel Karakter Olsun: "))

sifre=""

# Dizilerden istenildiği kadar karakter seçiyoruz
for kac in range(kucuk_harf_sayisi):
    sifre = sifre+random.choice(kucuk_harfler)
for kac in range(buyuk_harf_sayisi):
    sifre = sifre+random.choice(buyuk_harfler)
for kac in range(rakam_sayisi):
    sifre = sifre+random.choice(rakamlar)
for kac in range(ozel_karakter_sayisi):
    sifre = sifre+random.choice(ozel_karakterler)

print(sifre) # Orjinal şifremiz
sifre2 = list(sifre)
random.shuffle(sifre2)
sifre2 = ''.join(sifre2)

print(sifre2) # Karıştırılmış şifremiz

28. Adımdan sonra şifremizi karıştırıyoruz ki seçtiğimiz karakterlerimiz rastgele dağılsın.

# Ekran Çıktısı

Kaç Küçük Harf Olsun: 2
Kaç Büyük Harf Olsun: 2
Kaç Rakam Olsun: 2
Kaç Özel Karakter Olsun: 2
dıÖĞ41!(
!(ĞÖ14ıd