Sezar Şifreleme Yöntemi / Python - Turkish Tutorial

in #utopian-io7 years ago (edited)

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ü :
sezar.png

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

Sort:  

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

By upvoting this notification, you can help all Steemit users. Learn how here!

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

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

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