C# AES Şifreleme ile Verileri Çift Yönlü Koruma

Admin

Herşeyi Burada Bulabilirsin
Yönetici
Administrator
Akisor
Katılım
9 Haziran 2025
Mesajlar
66
Çözümler
1
Tepkime puanı
0
Puan
6
Konum
Türkiye
Web sitesi
akisforum.com
C# AES Şifreleme ile Verileri Güvenli Şekilde Şifrele & Çöz

🔐 AES Nedir ve Neden Kullanılır?
AES (Advanced Encryption Standard), simetrik yani çift yönlü bir şifreleme algoritmasıdır.
Veri hem şifrelenebilir hem de aynı anahtarla geri çözülebilir.
Özellikle:
- Dosya şifreleme
- Gizli mesajlar
- Konfigürasyon bilgileri saklama
gibi durumlar için idealdir.

🧠 AES Nasıl Çalışır?
AES şifrelemede 3 şey gerekir:
1. Key (anahtar) – 16/24/32 karakter olmalı
2. IV (Initialization Vector) – 16 baytlık rastgele veri
3. Veri – Şifrelenecek içerik

🔐 AES Şifreleme ve Deşifre Fonksiyonları
C#:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

public class AESCrypto
{
    public static string Sifrele(string plainText, string key)
    {
        byte[] anahtar = Encoding.UTF8.GetBytes(key.PadRight(32).Substring(0, 32));
        byte[] iv = new byte[16]; // Sabit IV kullanılabilir ama önerilmez

        using (Aes aes = Aes.Create())
        {
            aes.Key = anahtar;
            aes.IV = iv;

            ICryptoTransform encryptor = aes.CreateEncryptor();
            byte[] inputBytes = Encoding.UTF8.GetBytes(plainText);
            byte[] encrypted = encryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length);

            return Convert.ToBase64String(encrypted);
        }
    }

    public static string Coz(string encryptedText, string key)
    {
        byte[] anahtar = Encoding.UTF8.GetBytes(key.PadRight(32).Substring(0, 32));
        byte[] iv = new byte[16];
        byte[] encryptedBytes = Convert.FromBase64String(encryptedText);

        using (Aes aes = Aes.Create())
        {
            aes.Key = anahtar;
            aes.IV = iv;

            ICryptoTransform decryptor = aes.CreateDecryptor();
            byte[] decrypted = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);

            return Encoding.UTF8.GetString(decrypted);
        }
    }
}

🧪 Kullanım Örneği:
C#:
string orijinal = "Bu gizli bir mesajdır.";
string anahtar = "kerimguvenli32bitkey";

string sifreli = AESCrypto.Sifrele(orijinal, anahtar);
string cozulmus = AESCrypto.Coz(sifreli, anahtar);

Console.WriteLine("Şifreli: " + sifreli);
Console.WriteLine("Çözülmüş: " + cozulmus);

💡 Dikkat Etmen Gerekenler
- IV (Initialization Vector) sabit tutulursa tekrar şifrelemeler tahmin edilebilir hale gelir. Gerçek sistemlerde rastgele IV kullanılır ve veriye gömülür.
- Anahtarın güvenli saklanması gerekir. Aksi halde şifreleme bir anlam taşımaz.

🏁 Sonuç:
AES ile veri şifreleme C# içinde oldukça güçlü ve pratik.
Tek yönlü hash yeterli olmadığında, özellikle konfigürasyon veya hassas bilgiler saklanacaksa bu yapı mükemmel çözüm sunar.


📚 Daha Fazla Oku:
 
Geri
Üst