Sezar Şifreleme Yöntemi / Python - Turkish Tutorial
Merhaba arkadaşlar Ben Seyda Bozkurt sizlere bugün python ile sezar şifreleme yönetimini göstereceğim.
Aynı zamanda hep şifrelemeyi yapabilecez hemde sezar şifreleme yönteminin çözümünü gösterecem. peki sezar şifreleme yöntemi nedir?
kısaca sizler ondan biraz bahsedeyim. Sezar şifrelemesi harflerin yer değişimi ile olur bu teknik zamanında gizli bilgilerin başka birinin eline geçmesine karşın güvenli olması adıyla geliştirilmiş bir teknik. ne kadar güvenilir bu tartışılır çünkü bunun yapımının basit olduğu kadar çözümüde aynı şekilde basit fakat sizler ufakda olsa kendi şifreleme yöntemini bu konuda türete bilirsiniz. sizlere neden bu örneği veriyorum diye soruyorsanız çünkü bu sizin algoritma mantığınızın gelişmesine ve farklı yollar bulmanıza yardımcı olabileceğini düşündüğüm için sizlere bu yöntemi öneriyorum ve detaylı bir şekilde anlatmaya çalışacağım neyse lafı fazla uzatmadan hemen kodlama kısmına geçelim.
öncelikle alfabemizdeki her bir harfi ayrı ayrı olmak üzere bi listeye atamamız gerekiyor. onun için aşağıdaki kod satırını kopyalayıp yapıştıra bilirsiniz.
alfabe=['a','b' ,'c' , 'd', 'e', 'f', 'g' ,'h' ,'i' ,'j','k' ,'l' ,'m' ,'n' ,'o' ,'p' ,'r' ,'s' ,'t' ,'u' ,'v', 'y' ,'z']
bu harfleri atadık fark ettiyseniz türkçe karakter yok fakat isterseniz ekleye bilirsiniz ben sizlere genel bir örnek veriyorum şuanda bunu istediğiniz gibi geliştire ve değiştire bilirsiniz bu tamamıyla sizin becerinize ve düşünce gücünüze kalmış ikinci adımda ise;
girilen her bir harfin alfabe adlı listemizdeki indexi lazım çünkü her bir harfi öteleme yapacağımız için o harfin listede kaçıncı sırada olduğunu bulabilmemiz lazım. onun içinde aşağıdaki kod satırlarını kullanacağız.
for i in metin:
sifre+=alfabe[(alfabe.index(i)+3)%len(alfabe)]
yukarıda öncelikle girilen metinin her bir karakterini i değişkenine atadık ondan sonra i değişkenin alfabe isimli listeminizde indexini bulmak için alfabe.index(i) kodunu kullandık. aslında temel nokta bu biz karakterin kaçıncı sırada olduğunu bulabilirsek istediğimiz noktada azaltıp ve eksilte biliriz. daha sonra ise bulduğumuz index i Sezar şifreleme tekniğine uygunluğundan dolayı 3 ile topluyoruz yani var olan index numarası 5 ise 3 ile toplandıktan sonra 8 olacak biraz daha açmamı isterseniz mesela "c" karakterini girdi ve bize "c" karakterinin indexini 2 olarak verecek bunu 3 ile toplayıp 5 olmasını sağladık. 5 numaralı indexe baktığımızda da "f" karakterini görmemiz lazım buraya kadar herşey güzel gidiyor neyse devam edelim :) bir diğer altın kural olan sifreledikten sonraki numaranın (%) modunu almak. neden mi modunu alıyoruz çünkü bize "z" karakterini girerse 22 indexini görücez ve şifrelemek için onun index 25 olacak fakat listemizde 26 tane karakter yok onun için hata almamız gayet normal ama mod işlemini kullanmazsak. mod işlemini kullanırsak 25 in 22 modunu aldığında bize 3 sonucu çıkacak oda "z" karakterinin şifresi "c" karakteri olacak. evet şuana kadar karakterin listedeki indexini bulduk sonra 3 ile topladık (öteledik) sonrada modunu aldık ve şifreleme işlemini yaptık. peki neden "sifre+=" i kullandım. çünkü birden fazla karakter girildiğinde hepsini sifre adlı değişkene atayıp tek bir çıktı halinde aldığımızda bu bize baya bir fayda sağlayacaktır :) daha sonra ise
print("sifre :",sifre)
kodunu yazarak girdiğimiz metinin şifresini ekrana yazdırıyoruz. altta ve github linkinde kodun tamamı mevcut ve kodun işleyişini kodların altında bulabilirsiniz devam edelim o zaman :)
proje görüntüsü :
proje kodları :
def sezar(metin):
sifre = ""
alfabe=['a','b' ,'c' , 'd', 'e', 'f', 'g' ,'h' ,'i' ,'j','k' ,'l' ,'m' ,'n' ,'o' ,'p' ,'r' ,'s' ,'t' ,'u' ,'v', 'y' ,'z']
for i in metin:
sifre+=alfabe[(alfabe.index(i)+3)%len(alfabe)]
print("sifre :",sifre)
return metin"
isim = raw_input("metini giriniz : ")
sezar(isim)<
proje kod açıklaması:
evet arkadaşlar en üst satırdan bir tane fonksiyon tanımladık fonksiyonumuzun adı sezar ve gelen değeri metin olarak tanımladık
sonra ise sifre adında bir boş değişken oluşturduk çünkü bunu yapmazsak kesinlikle hata alacağız olmayan bir şeye atama olmayacağı için hata ile karşılaşacağız. daha sonra ise alfabe listesini tanımladık. bir döngü ile girilen metindeki her karakteri "i" değişkenine atadık ve her karakterin kendine ait indexini bulduk daha sonra ise Sezar tekniği ile yeni index numarasını oluşturduk ve alfabe listesinin içindeki o indexli (numaralı) karakteri çağırdık. print fonksiyonu ile sifremizi yazdırdık. karşıdan bir metin girmesini istedik raw_input fonksiyonu ile daha sonra onu isim değişkenine atayıp "sezar(isim)" diyerek fonksiyonun gerçekleşmesini sağladık. eğer aklınızda takılan her hangi bir soru veya öneri varsa lütfen benimle paylaşmayı unutmayın ileride daha farklı uygulamalarla hem algoritmamızı geliştirecez hemde yeni yöntemlerle hayatımızı kolaylaştırıcaz :)
github link : https://github.com/kansiper/Python-SezarSifreleme
Posted on Utopian.io - Rewarding Open Source Contributors
Congratulations @seydabozkurt! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of upvotes received
You made your First Vote
Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP
Congratulations! This post has been randomly Resteemed! For a chance to get more of your content resteemed join the SteemEngine network!
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Hey @seydabozkurt I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x