01.08.2023
3
Beğenme
893
Görüntülenme
Bu yazıda, en basit şifreleme algoritmalarından biri olan Yerine Koyma Şifrelemesini (Substitution Cipher) ele alacağız. Keyifli okumalar dilerim :)
Adından da anlaşılacağı üzere alfabedeki her bir karakterin yerine, alfabedeki seçilmiş başka bir karakteri atamaya dayanır. Sezar şifrelemesinde anahtar genellikle alfabedeki harflerin 3 birim kaydırılmasıyla oluşturulurken bu algoritmada anahtarın belirlenmesinde belirli bir kural yoktur. Yani anahtar, metni şifrelemek isteyen kişi tarafından tamamıyla rastgele seçilebilir.
Uygulanışı
Alfabe ve Anahtar:
abcçdefgğhıijklmnoöprsştuüvyz
müfıvejihpğaodyrubşgzcötsçlnk
Örnek bir uygulama olarak "Patika" kelimelerini şifreleyelim: Gmtadm
Avantajları:
Dezavantajları:
Yerine Koyma Şifrelemesini Kırmak
En başlıca bilinen basit yöntemlere bakalım:
Python Kodu
def yerine_koyma_sifre(alfabe, anahtar, acik_metin):
yerine_koy = {}
for i in range(len(alfabe)):
yerine_koy[alfabe[i]] = anahtar[i]
sifreli_metin = ''
for karakter in acik_metin:
if karakter.lower() in alfabe:
sifreli_metin += yerine_koy[karakter.lower()].upper() if karakter.isupper() else yerine_koy[karakter.lower()]
else:
sifreli_metin += karakter
return sifreli_metin
def
anahtar kelimesi ile yerine_koyma_sifre()
isimli fonksiyonumuzu tanımladık. Fonksiyon 3 adet parametre alıyor. Bunlar; şifreleme yapacağımız dilin alfabesi, alfabedeki her harfe karşılık oluşturacak anahtar ve son olarak da şifrelenecek metin.yerine_koy
isminde bir dictionary
tanımlıyoruz. Bu dictionary alfabedeki harfleri anahtardaki harfler ile eşleştirdiğimizde, her harfe karşılık gelen değeri key-value
ilişkisi ile tutacak.for
döngüsü tanımlıyoruz. Bu for döngüsü alfabenin uzunluğu kadar dönecek ve alfabedeki her harfi index numarasına göre anahtardaki karşılığı ile eşleştirecek.string
tanımlıyoruz.for
döngüsü başlatıyoruz. Bu döngü açık_metin'deki her karakteri gezecek ve eğer karakter alfabenin içerisinde ise (karakteri lower()
fonksiyonu ile küçültüyoruz çünkü alfabeyi küçük olarak tanımlayacağız) ternary
bir ifade kullanarak:else
durumunda ise karakter şifrelenmeden direkt olarak sifreli_metin stringine eklenir.return
anahtar kelimesi ile döndürülür.Dilerseniz fonksiyonu Patika kelimesi ile test edelim:
alfabe = 'abcçdefgğhıijklmnoöprsştuüvyz'
anahtar = 'müfıvejihpğaodyrubşgzcötsçlnk'
metin = 'Patika'
sifrele = yerine_koyma_sifre(alfabe, anahtar, metin)
print(sifrele) #Gmtadm
Beni daha fazla dokümantasyon ve bilgi için aşağıdaki GitHub hesabımdan takip edebilirsiniz :)
Okuduğunuz için teşekkür ederim, başka algoritmalarda görüşmek üzere :)
Kullanıcı yorumlarını görüntüleyebilmek için kayıt olmalısınız!