Vigenere Cipher nedir? - Python örneğiyle

Napcaz

Anka Team Senior
28 Nis 2019
767
764
Cudi
Günümüz kriptoloji dünyasında en bilindik ve basit şifreleme yöntemi olarak kabul gören Sezar şifrelemesini hepiniz duymuşsunuz. Eskiden farklı "yerine koyma" algoritmalarının kullanıldığını bilsekte ilk kaydedilen kullanımı aynı zamanda bu şifrelemeye adını veren ünlü Roma Generali Julius Caesar'a aittir. Özel mektuplarında bu yöntemi uygulayan Sezar, sasında çok basit bir yöntem kullanıyordur, birisine gizli bir şey söylemek istediği zaman ona yazdığı yazıdaki her harfi alfabede 3 harf sonrasına karşılık gelen harfle değiştiyordu ve bu şekilde gizli mesajları gizli mesaj olarak kalıyordu. Şuanki bilgisayarların işlem gücünü düşündüğümüzde türkçe alfabemize göre 29 olasılıktan oluşan bu şifrelemeyi çözmek saliseleri bile almıyor artık. Ama kriptoloji için önemli bir mihenk taşı. Bu gece sizlere bu şifrelemeyi bir tık ileri götürmüş başka bir klasik şifreleme yönteminden bahsedicem. Vigenere şifreleme. Bu şifreleme aslında iç içe geçmiş sezar şifrelemerinden oluşuyor. Şu şekilde bir örnek verebilirim:
Metin: DONDURMA YEMEYİ SEVERİM
Anahtar: SEMS
Şifreli metin: Ú×ÞÚëÚÝ× ïÍÝÛïƸ ãÛìÍâdžã

Yukarda gördüğünüz örnek benim birazdan sizle paylaşıcağım programımın yapmış olduğu bir işlemi sembolize ediyor eğer teyit etmek isterseniz 'D' harfinin unicode karşılığına 'S' yi ekleyip hangi karakterin çıktığına bakabilirsiniz.
Anahtar sürekli döndürülüyor ve bu şekilde metindeki her 1. ve 4. harf 'S' harfi ile şifrelenirken her 2. harf 'E' ile ve her 3. harf 'M' ile şifrelenicek. İşte bu bir çok alfabeli (polyalphabetic) şifreleme algoritmasıdır, vigenere cipher diye adlandırılır.

Kriptoloji bilgisayar biliminin temelindeki güvenlik sorununu ele alan ve biz siber güvenlikçiler için son derece önemli bir kavram, alandır. Günümüzde tahmin ederseniz ki vigenere cipher, bir https protolokündeki 's' yani secure kelimesini karşılamaya yeticek bir güvenlik sunmuyor aynı sezar gibi ama bu tarz klasik şifrelemeleri bilmenin önemli olacağını düşünüyorum. Daha fazlasını internetten araştırıp kendi basit şifreleme makinalarınızı yazabilirsiniz biraz kudurtur belki ama eminim çok şey kazanırsınız. Ben bu konu için kendim yazdığım bir vigenere toolunu sizinle paylaşmak istiyorum son olarak. İlerde bu tool için birde bruteforce aracı yazmayı düşünüyorum yani bir vigenere şifre kırıcı, şimdilik sizinle bu kodu paylaşmak istiyorum. İçinde gerekli tüm açıklamalar mevcut burda açıklamıyacağım o yüzden. Herkese iyi günler, Selametle kalın.

Bahsettiğim proje: GitHub - SemsYapar/UniversalVigenereCipher
Koda dair eleştirilerinizi bekliyorum; iyileştirme veya düzeltme, gözümden bir şeyler kaçmış, mantık hatası yapmış olabilirim her zaman

YAZAR NOTU: Muadili incelediğim projelerin hepsinde karakter sıkalası o kadar dardı ki bu durum içimi öylesine sıktı ki. Ben basit bir adam değilim saçma kısıtlamalar ile kullanıcının şifrelemek istediği veriyi kesip biçmek doğru gelmiyor. Kendi yetersizliğimi niye kullanıcıya yansıtmalıyım ki? Bu yüzden koda ayrıca emek verdim ve onda tüm unicode tablosunu vigenere algoritması ile uyumlu hale getirdim bu sayede şifrelemek istediğiniz karakterler okunabilen karakterler olmasa bile size sonuç vericem. Arapça harfler olsada sonuç var. Kapsamlı bir kod, etkili, zevkli, çok övdüm burda bitiyorum. Tekrardan iyi günler.
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.