Bu yazımda atbash şifreleme nin ne olduğunu anlatacağım. Aynı zamanda bu şifrelemeye bir kod örneği de vereceğim. Keyifli okumalar 🙂
Öncelikle şifreleme kelimesinin tanımı ile başlayalım:
İçindekiler Tablosu
Şifreleme Nedir?
Var olan bir metni veya içeriğin anlaşılmasını ve çözümlenmesini olabildiği kadar karmaşık hale getirmektir. Bir dizi matematiksel veya algoritmik işlemler kullanarak dönüştürme işlemidir de diyebiliriz.
Neden Şifrelemeye İhtiyaç Duyarız?
1. Bir verinin iletimi sırasında değiştirilmediğini ve bozulmadığını doğrulamak için kullanılabiliriz. Şifrelediğiniz bir veriyi, değiştirirsek çözülme sırasında hatalar üretecektir.
2. Önemli veri tabanları veya depolama sistemleri içindeki verileri şifrelemek, bu verilere yetkisiz erişimi zorlaştırır. Böylece, eğer herhangi bir fiziksel bir saldırı veya veri sızıntısı meydana gelirse şifrelediğiniz verileri çözülmeden o verilerin anlamlı hale getirilmesi zor olacaktır.
3. İnternet üzerinden iletilen verileri şifrelemek, üçüncü kişilerin bu verilere erişmesini zorlaştırır. Bu, kullanıcı adları, parolalar, kredi kartı bilgileri gibi önemli verilerin güvenli bir şekilde iletilmesini sağlamış olur.
4. Şifrelemeyi, dijital imzaları oluşturmak için kullanabilirsiniz. Bu sayede belirli bir verinin belirli bir kişi veya kurum tarafından oluşturulduğu doğrulayabilirsiniz. Bu doğrulama ile de veri hırsızlığının önüne geçmiş olursunuz.
Atbash Şifreleme Nedir?
Bir metni şifrelemek veya şifresini çözmek için İbrani alfabesi temelli basit bir yöntemdir. Bilinen en eski şifreleme yöntemlerinden biridir. Bu şifrelemede her harfin alfabedeki sırasını tersine çevirerek şifreleme işlemi yapar.

Örnek: Yukarıdaki tabloya göre;
“melisa” kelimesini “nvorhz” şeklinde şifreler.
Bu şifreleme yöntemi, tek harflik bir değişim olduğu için güvenlik açısından zayıftır ve modern şifreleme standartlarına göre kolayca çözümleyebilirsiniz. Ancak basit mesajları hızlıca şifrelemek veya arkadaşlarınızla oynayabileceğiniz bir kelime oyununa dönüştürmekte eğlenceli olabilir.<3
Şimdi bu şifreleme için yazdığımız koda bakalım. Öncelikle tek tek ne yazdığımızı görelim:
1.Kısım:

#include <stdio.h> ifadesi, C programlama dilinde standart girdi ve çıktı işlemlerini yönetmek için kullanılan bir başlık dosyasını (header file) dahil etmek anlamına gelir. C dilinde standart girdi ve çıktı fonksiyonlarını içerir. ‘stdio.h’ dosyası, klavyeden veri okuma (‘ scanf ’) ve ekrana veri yazdırma ( ‘ printf ‘) gibi temel girdi/çıktı işlemlerini gerçekleştirmek için gereken işlevleri ve tanımlamaları içerir.
#include <stdlib.h> ifadesi, C programlama dilinde dinamik bellek yönetimi, rasgele sayı üretimi, çevre ile iletişim, tamsayı aritmetiği, arama, sıralama ve dönüştürme gibi çeşitli işlemler için gerekli olan bir başlık dosyasını dahil etmek anlamına gelir.
#include <string.h> ifadesi, C programlama dilinde karakter dizileri ile çalışmak için gerekli olan işlevleri içeren bir başlık dosyasını dahil etmek anlamına gelir. ‘string.h’ dosyası, karakter dizileri üzerinde işlem yapmak için kullanılan işlevleri içerir. Karakter dizilerini kopyalamak, birleştirmek, karşılaştırmak gibi işlemleri gerçekleştirmenizi sağlar.
2.Kısım:

1. Bu kod parçacığında bir sayının belirli bir modülüne göre pozitif bir değere dönüştürmek için kullanılan ‘mod’ işlevini tanımladık. Bu tür bir işlevi, negatif sayıları belirli bir modülde pozitif bir sayıya dönüştürmek için kullanabiliriz.
2. İki tane parametre kullandık, bunlar ‘c’ (sayı) ve ’m’ (modül değeri).
3. While döngüsü içinde, eğer ‘c ‘ negatif ise (yani 0’dan küçük), ‘c’ değeri art arda ‘m’ değeri kadar artırırız. Bu işlem, ‘c’değerini belirli bir modül içinde pozitif bir sayıya dönüştürmeyi sağladık.
4. Döngü, ‘c’ değeri 0’dan büyük veya eşit olduğunda sona erer.
5. Son olarak, döngü sonlandığında pozitif ‘c’ değerini geri döndürür.
3.Kısım:

1. Bu kod parçacığında belirli bir karakteri Atbash şifrelemesi ile şifrelemek için kullanılan
‘encode’ adlı bir işlevi tanımladık. Bu şifrelemenin, alfabedeki harf sırasını tersine çevirerek çalışan basit bir şifreleme yöntem olduğunu söylemiştik.
2. İşlevin parametresi ‘p’, şifrelenecek olan karakteri yazdık. ‘-(p-65)-1’ ifadesi ile verilen karakterin alfabedeki indisini tersine çevirerek ve 1 çıkararak şifrelenmiş indis değerini hesaplatacağız. Burada 65, ASCII kodunda ‘A’ harfinin değerine karşılık gelir.
3. Elde edilen indis değeri, daha sonra mod işlevi ile 26’ya göre mod alınarak alfabenin sınırları içinde kalması sağlanır. Bu adımın amacı, olası hataları ve sınırları kontrol etmek içindir.
4. Bu kod parçacığına ‘return c’ eklenebiliriz.
4.Kısım:

1. Bu kod parçacığında ‘ char alfabe[ ] = “ABCDEFGHIJKLMNOPQRSTUVWXYZ” ’ ile tanımlanan dizi, şifreleme sırasında her karakterin Atbash şifrelemesi ile değiştirilmiş karşılığını bulmak için kullandık. ‘ char plain_text [100] ‘ ise kullanıcıdan alınacak olan metni tutmak için bir karakter dizisi tanımlar. Maksimum 100 karakterlik bir metni alabilecek kapasiteye sahiptir.
2. Kullanıcıya mesaj girmesi için bir mesaj yazdırdık. Kullanıcının girdiği metin plain_text dizisine okuttuk. ‘ int indis ‘ ile şifreleme sırasında her karakterin bu şifreleme ile değiştirilmiş indis değerini tutması için bir değişken tanımladık. ‘ printf(“\nSifreli metin”) kısmında, şifreli metni ekrana yazdırmadan önce bir başlık yazdırdık.
3. for ile kullanıcının girdiği metindeki her bir karakteri döngü aracılığıyla işlemek için bir döngü başlattık. ‘ indis = encode(plain_text[i]) ‘ Döngü içinde, encode fonksiyonu kullanılarak mevcut karakter Atbash şifrelemesi ile şifrelenmiş indis değerine dönüştürdük.
4. Elde edilen indis değeri, alfabe dizisindeki karşılık gelen harf ile değiştirilir ve ekrana yazdırdık. Programın başarıyla sonlandığını belirtmek için 0 döndürülür.
Böylece C programı kullanarak , kullanıcıdan alınan bir metni şifrelemek için kullanılan basit bir şifreleme yöntemini uygulamış olduk. Şifreleme işlemi, girilen metindeki her bir karakteri özel bir formül kullanarak şifreli bir karaktere dönüştürdük.

Son olarak kodun tamamı yukarıdaki gibidir. Bu yazım bu kadardı, umarım faydalı olmuştur. Herkese iyi çalışmalar 🙂
Leave a Comment