Güvenli Şifreleme Yöntemleri: Python, PHP ve ASP Örnekleriyle Uygulamalı Rehber
Günümüzde internet üzerinden veri iletimi ve kullanıcı bilgilerini korumak, güvenlik açısından kritik bir öneme sahiptir. Bu sebeple, veri güvenliği sağlamak için güvenli şifreleme yöntemlerinin kullanılması büyük bir önem taşır. Şifreleme, verilerin yalnızca yetkili kişiler tarafından okunabilir olmasını sağlamak amacıyla kullanılan matematiksel bir işlemdir. Bu makalede, Python, PHP ve ASP gibi yaygın programlama dillerinde güvenli şifreleme yöntemleri üzerinde durulacak ve her bir dilde pratik örnekler verilecektir.
1. Şifrelemenin Temelleri
Şifreleme, verilerin gizliliğini sağlamak için kullanılır. Bu işlem, verinin orijinal halini (düz metin) şifreli hale getirir ve sadece doğru anahtara sahip olanlar veriyi çözebilir. Şifreleme algoritmaları genellikle iki ana türde sınıflandırılır:
Simetrik Şifreleme: Aynı anahtar kullanılarak veri şifrelenir ve çözülür. AES (Advanced Encryption Standard) en popüler simetrik şifreleme algoritmalarından biridir.
Asimetrik Şifreleme: İki farklı anahtar kullanılır; biri veriyi şifrelerken diğeri çözmek için kullanılır. RSA (Rivest–Shamir–Adleman) asimetrik şifrelemenin örneklerinden biridir.
2. Python ile Şifreleme Örneği
Python, şifreleme işlemleri için güçlü kütüphaneler sunar. Bu örnekte, cryptography kütüphanesini kullanarak AES şifrelemesi yapılacaktır.
Python’da AES Şifreleme
Öncelikle cryptography kütüphanesinin kurulu olması gerekmektedir. Eğer yüklü değilse, şu komutla yükleyebilirsiniz:
1pip install cryptographyPython Kod Örneği
1from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes2from cryptography.hazmat.backends import default_backend3from cryptography.hazmat.primitives import padding4import os56# Şifreleme için bir anahtar ve IV (Initialization Vector) oluşturuluyor7key = os.urandom(32) # 256-bit anahtar8iv = os.urandom(16) # 128-bit IV910# Verinin şifrelenmesi11data = "Gizli Mesaj".encode('utf-8')1213# Veriyi pad'leyerek AES şifrelemesine uygun hale getirme14padder = padding.PKCS7(128).padder()15padded_data = padder.update(data) + padder.finalize()1617# AES şifreleyicisini oluşturma18cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())19encryptor = cipher.encryptor()20ciphertext = encryptor.update(padded_data) + encryptor.finalize()2122print(f"Şifrelenmiş veri: {ciphertext}")3. PHP ile Şifreleme Örneği
PHP, verileri şifrelemek için openssl fonksiyonları sağlar. Bu bölümde AES-256-CBC şifrelemesi örneği gösterilecektir.
PHP’de AES-256-CBC Şifreleme
PHP Kod Örneği
1<?php2// AES-256-CBC şifreleme için anahtar ve IV (Initialization Vector) oluşturuluyor3$key = openssl_random_pseudo_bytes(32); // 256-bit anahtar4$iv = openssl_random_pseudo_bytes(16); // 128-bit IV56$data = "Gizli Mesaj";78// Veriyi şifrelemek9$ciphertext = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);1011echo "Şifrelenmiş veri: " . bin2hex($ciphertext);12?>4. ASP ile Şifreleme Örneği
ASP.NET’te şifreleme işlemleri genellikle .NET Framework'ün sağladığı System.Security.Cryptography sınıfları ile yapılır. Bu bölümde AES-256 şifrelemesi örneği verilecektir.
ASP.NET ile AES-256 Şifreleme
ASP.NET C# Kod Örneği
1using System;2using System.Security.Cryptography;3using System.Text;45class Program6{7static void Main()8{9string data = "Gizli Mesaj";10string key = "BuCokGizliAnahtarIcin256Bit"; // 256-bit anahtar11string iv = "RastgeleIV123456"; // 128-bit IV1213using (Aes aesAlg = Aes.Create())14{15aesAlg.Key = Encoding.UTF8.GetBytes(key);16aesAlg.IV = Encoding.UTF8.GetBytes(iv);1718ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);1920byte[] encrypted = PerformCryptography(Encoding.UTF8.GetBytes(data), encryptor);21Console.WriteLine($"Şifrelenmiş veri: {Convert.ToBase64String(encrypted)}");22}23}2425static byte[] PerformCryptography(byte[] data, ICryptoTransform cryptoTransform)26{27using (System.IO.MemoryStream ms = new System.IO.MemoryStream())28{29using (CryptoStream cs = new CryptoStream(ms, cryptoTransform, CryptoStreamMode.Write))30{31cs.Write(data, 0, data.Length);32}33return ms.ToArray();34}35}36}5. Güvenli Şifreleme İpuçları
Anahtar Yönetimi: Şifreleme anahtarları çok önemlidir. Anahtarların güvenli bir şekilde saklanması gerekmektedir. Genellikle anahtarlar, çevrim dışı ortamlarda saklanmalı ve sadece belirli kişiler tarafından erişilebilir olmalıdır.
IV Kullanımı: IV (Initialization Vector), şifreleme algoritmalarının her seferinde farklı sonuçlar üretmesini sağlamak için kullanılır. IV, şifrelemede her seferinde rastgele oluşturulmalıdır.
Hizmet Saldırılarına Karşı Koruma: Şifreleme işlemleri, hizmet reddi (DoS) saldırılarına karşı dayanıklı olmalıdır. Bu, şifreleme algoritmasının doğru bir şekilde optimize edilmesi ve gereksiz hesaplama yükünün önlenmesiyle sağlanabilir.
Güvenli şifreleme yöntemleri, veri güvenliği için hayati öneme sahiptir. Bu makalede Python, PHP ve ASP gibi farklı programlama dillerinde AES şifreleme örnekleri sunduk. Şifreleme sırasında doğru anahtar ve IV kullanımı, güvenlik açısından kritik unsurlar olup, sistemdeki veri güvenliğini sağlamada en önemli faktörlerden biridir.
0 yorum