Adından da anlaşıldığı uzere bu algoritmayı Jul Sezar gonderdiği mesajların duşmanların tarafında ele gecirilirse o mesajı anlamaması icin oluşturulmuştur. Bu algoritma en temel şifreleme olarak kabul edilmektedir. Gunumuzde şifreleme icin pek guvenli sayılmamaktadır. Cunku cozme olasılığı 1/25 dır. Eğer şifreleme turu bilinmiyorsa bu daha zor olacaktır ama biliniyorsa en fazla 25 denemede şifre kırılacaktır. Gunumuzde hicbir şifreleme ceşidi kırılamaz değildir. Bazı şifreler 10 gunde kırılırken bazı şifreler ise 100 yılda kırılabilir. Bir şifreyi kırma sureciniz, bilgisayarınızın gucune gore değişecektir. Sezar algoritması, ana mesajın her bir harfini belirtilen anahtar sayı kadar ileri kaydırarak şifreli mesajı oluşturmak uzeredir. Şifreyi cozmek icin ise anahtar sayısı ile şifreli mesajdaki her karakterin anahtar sayısı kadar geriye giderek ana mesajı donuşturmesi uzerinedir. Ornek olarak ana mesajımız “canberk” olsun. Anahtar sayımız da 3 olsun. Daha sonra ana mesajdaki her harfi 3 harf ileri kaydırıp şifreli mesajı “fdqehun” olarak buluruz. Aynı şekilde bu şifreyi cozmek icin ise o harften itibaren 3 harf geri giderek “canberk” ana mesajımızı elde ederiz. Yazılan kodların ana yapısı her bir harfin ASCII sayı tablosunda karşılığına gelecek şekilde duşunulmuştur. Ayrıca alfabe 26 karakterle sınırlı olup Turkce karakterler gecerli değildir. İlk olarak maksimum anahtar uzunluğunu alfabe uzunluğu kadar olduğunu belirtelim. Kod:
MAX_KEY_SIZE = 26
Daha sonra kullanıcıdan mesajı şifrelemek mi yoksa şifreli mesajı cozmek mi istediğini oğrenmek icin bir fonksiyon oluşturalım. Kod:
def getMode(): while True: print('Do you wish to encrypt or decrypt a message?') mode = input().lower() if mode in 'encrypt e decrypt d'.split(): return mode else: print('Enter either "encrypt" or "e" or "decrypt" or "d".')
Yukarıdaki fonksiyonda şifreleme(eccrypt) mi yoksa cozme (decrypt) işlemi yapmak istediğinizi soruyor, ardından sizin girdiğiniz değeri lower() fonksiyonu ile kucuk harfe cevirip mode değişkenine atıyor. if dogusu ile mode icine atanılan input değerinde ‘encrypt e decrypt d’ icerip icermediğini kontrol ediyor. Eğer iceriyorsa bunu return yapıyor değilse tekrar soruyor. Kod:
def getMessage(): print('Enter your message:') return input()
Yukarıdaki fonksiyonu “şifrelenecek” ya da “cozulecek” mesajı almak icin kullanacağız. Daha sonra bu değeri return ediyoruz. Kod:
key = 0 while True: print('Enter the key number (1-%s)' % (MAX_KEY_SIZE)) key = int(input()) if (key >= 1 and key ord('Z'): #90 num -= 26 elif num < ord('A'): #65 num += 26 elif symbol.islower(): if num > ord('z'): #122 num -= 26 elif num < ord('a'): #97 num += 26 translated += chr(num) else: translated += symbol return translated
Yukarıda fonksiyonun ana kısmını yazdık. İlk olarak kullanıcının yapmak istediği işlemi mode değerine atamıştık. Eğer kullanıcı bir mesajı şifrelemek istiyorsa ikinci ve ucuncu satırları atlayıp işleme girecektir. Eğer şifre cozmek istiyorsa ucuncu satırda anahtar değerini negatif yaparak geriye doğru gitmeyi sağlayacaktır. translated,ilk ici boş olarak atanan,bizim sonuc değişkenimizdir. Ardından for dongusu ile kullanıcının mesajının her harfini symbol isimli değişkene atayıp o karakterin harf olup olmadığını kontrol etmek icin isalpha() fonksiyonunu kullanacağız. Ardından kullanıcıdan alının anahtar değerini, o harfin ASCII tablosundaki değerine ekliyoruz/azaltıyoruz. Daha sonra alfabenin sınırlarını belirlemek icin hem kucuk hem de buyuk harfler icin sınırları ciziyoruz. Bundan sonra elimizdeki sayı değerini karaktere cevirip translated değişkenine atıyoruz. Eğer en başta kontrol ettiğimiz harf olup olmama durumunda, eğer harf harici bir karakter varsa bunu değiştirmeden direk sonuc değişkenine atıyor. Ardından da sonuc(translated) değişkenini return ediyoruz. Kod:
mode = getMode() message = getMessage() key = getKey()
İlk başta yazdığımız 3 fonksiyondan gelen değerleri ayrı ayrı değişkenlere atıyoruz. Kod:
print('Your translated text is:') print(getTranslatedMessage(mode, message, key))
Son olarak print fonksiyonu icinde ana fonksiyonumuza, diğer fonksiyonlardan gelen değerleri parametre olarak gonderip sonucumuzu alıyoruz. Tek Parca ; https://github.com/canozer13/Python/...r_algorithm.py Kaynak ; https://medium.com/kodcular/python-i...1-974b6780fd41
__________________
MAX_KEY_SIZE = 26
Daha sonra kullanıcıdan mesajı şifrelemek mi yoksa şifreli mesajı cozmek mi istediğini oğrenmek icin bir fonksiyon oluşturalım. Kod:
def getMode(): while True: print('Do you wish to encrypt or decrypt a message?') mode = input().lower() if mode in 'encrypt e decrypt d'.split(): return mode else: print('Enter either "encrypt" or "e" or "decrypt" or "d".')
Yukarıdaki fonksiyonda şifreleme(eccrypt) mi yoksa cozme (decrypt) işlemi yapmak istediğinizi soruyor, ardından sizin girdiğiniz değeri lower() fonksiyonu ile kucuk harfe cevirip mode değişkenine atıyor. if dogusu ile mode icine atanılan input değerinde ‘encrypt e decrypt d’ icerip icermediğini kontrol ediyor. Eğer iceriyorsa bunu return yapıyor değilse tekrar soruyor. Kod:
def getMessage(): print('Enter your message:') return input()
Yukarıdaki fonksiyonu “şifrelenecek” ya da “cozulecek” mesajı almak icin kullanacağız. Daha sonra bu değeri return ediyoruz. Kod:
key = 0 while True: print('Enter the key number (1-%s)' % (MAX_KEY_SIZE)) key = int(input()) if (key >= 1 and key ord('Z'): #90 num -= 26 elif num < ord('A'): #65 num += 26 elif symbol.islower(): if num > ord('z'): #122 num -= 26 elif num < ord('a'): #97 num += 26 translated += chr(num) else: translated += symbol return translated
Yukarıda fonksiyonun ana kısmını yazdık. İlk olarak kullanıcının yapmak istediği işlemi mode değerine atamıştık. Eğer kullanıcı bir mesajı şifrelemek istiyorsa ikinci ve ucuncu satırları atlayıp işleme girecektir. Eğer şifre cozmek istiyorsa ucuncu satırda anahtar değerini negatif yaparak geriye doğru gitmeyi sağlayacaktır. translated,ilk ici boş olarak atanan,bizim sonuc değişkenimizdir. Ardından for dongusu ile kullanıcının mesajının her harfini symbol isimli değişkene atayıp o karakterin harf olup olmadığını kontrol etmek icin isalpha() fonksiyonunu kullanacağız. Ardından kullanıcıdan alının anahtar değerini, o harfin ASCII tablosundaki değerine ekliyoruz/azaltıyoruz. Daha sonra alfabenin sınırlarını belirlemek icin hem kucuk hem de buyuk harfler icin sınırları ciziyoruz. Bundan sonra elimizdeki sayı değerini karaktere cevirip translated değişkenine atıyoruz. Eğer en başta kontrol ettiğimiz harf olup olmama durumunda, eğer harf harici bir karakter varsa bunu değiştirmeden direk sonuc değişkenine atıyor. Ardından da sonuc(translated) değişkenini return ediyoruz. Kod:
mode = getMode() message = getMessage() key = getKey()
İlk başta yazdığımız 3 fonksiyondan gelen değerleri ayrı ayrı değişkenlere atıyoruz. Kod:
print('Your translated text is:') print(getTranslatedMessage(mode, message, key))
Son olarak print fonksiyonu icinde ana fonksiyonumuza, diğer fonksiyonlardan gelen değerleri parametre olarak gonderip sonucumuzu alıyoruz. Tek Parca ; https://github.com/canozer13/Python/...r_algorithm.py Kaynak ; https://medium.com/kodcular/python-i...1-974b6780fd41