Web’de veri güvenliği her geçen gün daha önemli hale geliyor. Kullanıcıdan alınan bilgilerin üçüncü kişiler tarafından ele geçirilmesini engellemek için, verilerin şifrelenerek iletilmesi şart. Bu yazıda, PHP kullanarak RSA algoritmasıyla verileri nasıl şifreleyeceğimizi anlatacağım. Ek bir kütüphane kurmadan, sadece openssl
fonksiyonlarını kullanarak bu işi halledeceğiz.
🔐 RSA Nedir?
RSA, bir asimetrik şifreleme algoritmasıdır. Yani şifreleme ve çözme işlemleri iki farklı anahtarla yapılır:
- Public Key (Açık Anahtar): Herkesle paylaşılır. Şifrelemek için kullanılır.
- Private Key (Özel Anahtar): Gizli tutulur. Şifreyi çözmek için kullanılır.
Yani bir veriyi public key ile şifrelediğinizde, sadece private key sahibi bu veriyi çözebilir.
🛠 PHP ile Uygulama
Şimdi bir örnek yapalım: Kullanıcıdan alınan bir metni RSA ile şifreleyecek, ardından bu şifreli veriyi yine PHP ile çözeceğiz.
<?php // RSA anahtarlarını oluştur $keyConfig = [ "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]; $res = openssl_pkey_new($keyConfig); openssl_pkey_export($res, $privateKey); $details = openssl_pkey_get_details($res); $publicKey = $details['key']; // Formdan gelen metni al $input = $_POST['veri'] ?? null; $encryptedBase64 = ''; $decrypted = ''; if ($input) { // Public key ile şifrele openssl_public_encrypt($input, $encrypted, $publicKey); $encryptedBase64 = base64_encode($encrypted); // Private key ile çöz openssl_private_decrypt($encrypted, $decrypted, $privateKey); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>RSA Şifreleme PHP</title> </head> <body> <h2>PHP ile RSA Şifreleme</h2> <form method="POST"> <label>Şifrelenecek Metin:</label><br> <textarea name="veri" rows="4" cols="50"><?= htmlspecialchars($input) ?></textarea><br><br> <button type="submit">Şifrele</button> </form> <?php if ($input): ?> <h3>🔑 Public Key:</h3> <pre><?= htmlspecialchars($publicKey) ?></pre> <h3>🔒 Şifreli Veri (Base64):</h3> <pre><?= htmlspecialchars($encryptedBase64) ?></pre> <h3>🔓 Çözülmüş Veri:</h3> <pre><?= htmlspecialchars($decrypted) ?></pre> <?php endif; ?> </body> </html>
🧪 Nasıl Çalışır?
- Sayfa açıldığında PHP yeni bir RSA anahtar çifti üretir.
- Kullanıcı formdan bir mesaj gönderdiğinde:
- Public key ile şifrelenir.
- Private key ile çözülür.
- Hem şifreli hali hem çözülmüş hali ekranda gösterilir.
🧠 Notlar
- RSA şifrelemenin sınırı vardır. 2048 bitlik bir anahtarla yaklaşık 245 bayttan fazla veriyi doğrudan şifreleyemezsin. Bu yüzden büyük veriler için genelde:
- Veri AES ile şifrelenir,
- AES anahtarı RSA ile şifrelenir.
- Bu örnek her sayfa yenilendiğinde yeni bir anahtar çifti üretir. Gerçek uygulamada anahtarlar
.pem
dosyalarına kaydedilip oradan çağrılır.
🎯 Sonuç
PHP ile RSA şifreleme yapmak oldukça kolay. Özellikle kullanıcıdan gelen hassas verileri şifreli olarak iletmek istediğimiz durumlarda bu yöntemi rahatlıkla kullanabiliriz.
Kodun çalışır hali : https://files.utkukahraman.dev/isu/2/bahar/kriptografi/rsa
İlk Yorumu Siz Yapın