İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Güvenli Şifre Oluşturan Program Yazmak | Python

Thessaloniki - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2019
Nereden:
Selanik
Mesajlar:
9
Konular:
4
Teşekkür (Etti):
4
Teşekkür (Aldı):
2
Ticaret:
(0) %
4 Hafta önce
#1
Güvenli Şifre Oluşturan Program Yazmak | Python
Programı kısaca anlatmak gerekirse, önce harfler, sayılar ve özel karakterlerden oluşan bir liste oluşturacağız, sonra ise bu listeyi kullanarak rastgele bir şifre üreteceğiz.

Kod:
import numpy as np
 
def char_range(c1, c2):
    for c in xrange(ord(c1), ord(c2)+1):
        yield chr(c)
İlk satırda numpy kütüphanesini import ettik. Daha sonra yazdığım fonksiyon ise, verilen iki karakter arasındaki karakterleri üreten bir üreteç döndürüyor. Ord komutu içine boyutu 1 olan bir string alır ve bu string’in unicode değerini bize verir. Örnekleyelim; deneme=ord(“a”) şeklinde bir kod yazıp, print deneme ile deneme değişkenini ekrana yazdırırsak, program ekrana 97 değerini basacaktır. 97 “a” harfinin unicode değeridir. Chr komutu iste tam tersini yapacaktır; chr(97) bize “a” değerini döndürecektir. Yani fonksiyonumuz c1 ve c2 arasındaki tüm karakterlerin unicode değerleri ile bir üreteç oluşturacak. Devam edelim; şifre uzunluğumuzu programa verip listemizi oluşturalım.

Kod:
sifre_uzunlugu=15
 
sayi=list(xrange(10))
ozel=["*",".","_","-"]
karakterler=[]
 
for harf in char_range('a', 'z'):
    karakterler.append(harf)
    karakterler.append(harf.upper())
karakterler+=sayi+ozel
Burada ise 15 karakter uzunluğunda bir şifre olsun dedik. Peşinden 0 ile 9 arası sayılar bulunan sayı listesini ve içinde benim seçtiğim özel karakterlerin bulunduğu ozel isimli listeyi oluşturduk. Sonrasında ilk kod parçasında oluşturduğumuz fonksiyon ile ürettiğimiz üreteci kullanarak, a’dan z’ye tüm harfleri (hem büyük, hem küçük harfleri) karakterler isimli listeme ekliyoruz. Son olarak da, karakterler listesine sayı ve özel isimli listeleri ekliyoruz. Karakterler isimli listeyi ekran bastığımızda sonuç şöyle olacaktır;

Kod:
['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '*', '.', '_', '-', '!', '^', '+', '%', '&', '/', '(', ')', '=', '?', '_', '#', '$', '{', '}', '[', ']', ':', ';', '~', '<', '|', '>']
Tüm karakterlerimizi tek bir listede topladık. Buradan sonra ise, bu listeden rastgele elemanlar seçip şifremizi oluşturacağız.

Kod:
sifre=[]
sonuc=""
 
for i in range(sifre_uzunlugu):
	eklenecek_eleman=np.random.uniform(0,len(karakterler))
	eklenecek_eleman=int(eklenecek_eleman)
	sifre.append(karakterler[eklenecek_eleman])
	sonuc+=str(sifre[i])
 
print sonuc
Önce rastgele 15 elemanı tutacak bir boş liste ve onun birleştirilmiş halini tutacak boş bir string oluşturduk. Döngümüz başta belirlediğimiz şifre uzunluğu kadar dönüyor ve her dönüşte karakterler listemizden bir elemanı şifre isimli listeye ekliyor. Döngüde np.random.uniform(0,len(karakterler)) komutu 0 ile karakterler listesinin boyutu arasında rastgele bir sayı oluşturuluyor, daha sonra eklenecek_eleman=int(eklenecek_eleman) komutu bu rastgele sayıyı tam sayıya çeviriliyor ve son olarak sifre.append(karakterler[eklenecek_eleman]) komutuyla karakterler isimli listemizden oluşturduğumuz rastgele sayı numaralı eleman şifre listesine ekleniyor.

Programın tam halinin kodları aşağıdaki gibidir.

Kod:
import numpy as np
 
def char_range(c1, c2):
    for c in xrange(ord(c1), ord(c2)+1):
        yield chr(c)
 
sifre_uzunlugu=15
 
sayi=list(xrange(10))
ozel=["*",".","_","-"]
karakterler=[]
 
for harf in char_range('a', 'z'):
    karakterler.append(harf)
    karakterler.append(harf.upper())
karakterler+=sayi+ozel

['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '*', '.', '_', '-', '!', '^', '+', '%', '&', '/', '(', ')', '=', '?', '_', '#', '$', '{', '}', '[', ']', ':', ';', '~', '<', '|', '>']
 
sifre=[]
sonuc=""
 
for i in range(sifre_uzunlugu):
	eklenecek_eleman=np.random.uniform(0,len(karakterler))
	eklenecek_eleman=int(eklenecek_eleman)
	sifre.append(karakterler[eklenecek_eleman])
	sonuc+=str(sifre[i])
 
print sonuc
Böylece basit ve kullanışlı bir güvenli şifre üreticisi geliştirmiş olduk. Herkes bu kodları deneyip geliştirebilir.
flamermember - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2019
Mesajlar:
40
Konular:
0
Teşekkür (Etti):
3
Teşekkür (Aldı):
10
Ticaret:
(0) %
4 Hafta önce
#2
Neden python2

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı