Sezar şifrelemesi, tarihi çok eski zamanlara dayanan ve oldukça basit bir şifreleme yöntemidir. Roma İmparatoru Julius Caesar tarafından kullanılan bu şifreleme tekniği, harfleri belirli bir kaydırma miktarıyla şifreleyerek güvenliği sağlar. Bu yazımızda, PHP dilinde Sezar şifrelemesini nasıl uygulayacağınızı adım adım göstereceğiz.
Sezar Şifrelemesi Nedir?
Sezar şifrelemesi, metindeki her harfi belirli bir sayı kadar kaydırarak yapılan basit bir şifreleme yöntemidir. Bu örnekte harfler, Türk alfabesi esas alınarak 3 harf ileri kaydırılmıştır.
Türk alfabesi:
A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z
(Toplam 29 harf)
Her harf, alfabe içinde 3 pozisyon ileri kaydırılır. Alfabenin sonuna gelindiğinde başa dönülür.
A | B | C | Ç | D | E | F | G | Ğ | H | I | İ | J | K | L | M | N | O | Ö | P | R | S | Ş | T | U | Ü | V | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ç | D | E | F | G | Ğ | H | I | İ | J | K | L | M | N | O | Ö | P | R | S | Ş | T | U | Ü | V | Y | Z | A | B | C |
Sezar Şifrelemesi Nasıl Çalışır?
Sezar şifrelemesi şu şekilde çalışır:
- Kullanıcı, şifrelemek istediği metni girer.
- Her bir harf, belirli bir kaydırma miktarına göre değiştirilir.
- Şifreli metin elde edilir.
- Aynı kaydırma değeriyle şifre çözme işlemi yapılabilir.
Bu yöntemin en büyük dezavantajı, kaydırma değeri bilindiği takdirde şifrenin kolayca çözülebilmesidir. Ancak, eğitim ve uygulama amaçları için oldukça kullanışlıdır.
PHP ile Sezar Şifrelemesi Uygulaması
Şimdi, PHP ile Sezar şifrelemesini nasıl yapabileceğimizi görelim. Aşağıda, kullanıcıdan alınan metni ve kaydırma miktarını kullanarak şifreleme yapan basit bir PHP kodu bulunmaktadır.
PHP Kodunu İnceleyelim
<?php // Türkçe harf dizisi (büyük harflerle) $alfabe = ['A','B','C','Ç','D','E','F','G','Ğ','H','I','İ','J','K','L','M','N','O','Ö','P','R','S','Ş','T','U','Ü','V','Y','Z']; // Şifreleme fonksiyonu function sezar_sifrele($metin, $kaydirma) { global $alfabe; $metin = mb_strtoupper($metin, 'UTF-8'); $sonuc = ""; for ($i = 0; $i < mb_strlen($metin, 'UTF-8'); $i++) { $harf = mb_substr($metin, $i, 1, 'UTF-8'); if (in_array($harf, $alfabe)) { $index = array_search($harf, $alfabe); $yeni_index = ($index + $kaydirma) % count($alfabe); $sonuc .= $alfabe[$yeni_index]; } else { $sonuc .= $harf; // Harf değilse aynen ekle } } return $sonuc; } // Çözme fonksiyonu function sezar_coz($metin, $kaydirma) { global $alfabe; $metin = mb_strtoupper($metin, 'UTF-8'); $sonuc = ""; for ($i = 0; $i < mb_strlen($metin, 'UTF-8'); $i++) { $harf = mb_substr($metin, $i, 1, 'UTF-8'); if (in_array($harf, $alfabe)) { $index = array_search($harf, $alfabe); $yeni_index = ($index - $kaydirma + count($alfabe)) % count($alfabe); $sonuc .= $alfabe[$yeni_index]; } else { $sonuc .= $harf; } } return $sonuc; } // Kullanıcıdan veri alma if ($_SERVER["REQUEST_METHOD"] == "POST") { $metin = $_POST['metin']; $kaydirma = intval($_POST['kaydirma']); $sifreli = sezar_sifrele($metin, $kaydirma); $cozulmus = sezar_coz($sifreli, $kaydirma); } ?> <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <title>Türkçe Sezar Şifreleme</title> </head> <body> <h2>Sezar Şifreleme ve Çözme</h2> <form method="post"> <label for="metin">Metin:</label><br> <input type="text" name="metin" id="metin" required><br><br> <label for="kaydirma">Kaydırma Miktarı (sayı):</label><br> <input type="number" name="kaydirma" id="kaydirma" value="3" required><br><br> <input type="submit" value="Şifrele ve Çöz"> </form> <?php if (isset($sifreli)): ?> <h3>Şifrelenmiş Metin: <?= $sifreli ?></h3> <h3>Çözülen Metin: <?= $cozulmus ?></h3> <?php endif; ?> </body> </html>
PHP Kodunun Açıklaması:
- Sezar Şifreleme Fonksiyonu (
sezar_sifrele
): Bu fonksiyon, her harfi kaydırarak şifreleme işlemi yapar. Harflerin küçük veya büyük olmasına göre ASCII değerlerini kullanarak kaydırma yapar. Harf olmayan karakterler (boşluk, noktalama işaretleri vb.) olduğu gibi bırakılır. - Şifre Çözme Fonksiyonu (
sezar_coz
): Şifreli metni çözmek için, aynı kaydırma değeri ile şifre çözme işlemi yapılır. Bu, şifreleme fonksiyonunun tersine çalışır. - HTML Formu: Kullanıcıdan şifrelemek istediği metni ve kaydırma miktarını alır. Kullanıcı formu gönderdikten sonra PHP kodu çalışır ve şifreli metin ile çözülen metin ekrana yazdırılır.
Sezar Şifrelemesi Nasıl Çalışır?
Örneğin, kullanıcı “Merhaba” metnini ve kaydırma değeri olarak 3 seçerse, şifreli metin şu şekilde olacaktır:
- Girdi:
MERHABA
- Şifrelenmiş:
ÖĞTJÇDÇ
Kullanıcı şifreli metni tekrar çözüme almak isterse, aynı kaydırma değeri ile şifre çözme işlemi yapılır:
- Çözülen Metin:
Merhaba
Bu şekilde Sezar şifrelemesi hem güvenli olmayan, ama eğitim ve uygulama amacıyla oldukça yararlı bir şifreleme yöntemidir.
Sonuç
PHP ile Sezar şifrelemesi yapmak oldukça basit ve etkili bir yöntemdir. Bu yazıda, Sezar şifrelemesinin nasıl çalıştığını, PHP ile nasıl kodlanacağını ve şifre çözme işlemini nasıl yapabileceğimizi öğrendik. Bu tür basit şifreleme yöntemleri, temel kriptografi prensiplerini öğrenmek için harika bir başlangıçtır.
Eğer daha ileri seviyede şifreleme ve güvenlik önlemleri arıyorsanız, modern şifreleme algoritmalarına (örneğin AES veya RSA) geçmeyi düşünebilirsiniz.
Kodun çalışır hali :
Türkçe : https://files.utkukahraman.dev/isu/2/bahar/kriptografi/sezar/
Normal : https://files.utkukahraman.dev/isu/2/bahar/kriptografi/sezar/index-2.php
İlk Yorumu Siz Yapın