C# Şifreleme Yöntemleri (MD5, SHA256, AES, Base64)

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# ile Şifreleme Yöntemleri – En Yaygın 4 Teknik

🔐 Şifreleme Neden Önemlidir?
Veri güvenliği, modern uygulamalarda en kritik konulardan biridir.
Kullanıcı parolaları, gizli veriler veya API anahtarları korunmak isteniyorsa, veriler şifrelenmelidir.

C# ile hem tek yönlü (geri çözülemez) hem de çift yönlü (çözülebilir) şifreleme tekniklerini kolayca kullanabilirsin.

Bu konuda en çok kullanılan 4 yöntemi anlatacağım:
- MD5
- SHA256
- AES
- Base64

🔸 1. MD5 Şifreleme (Tek Yönlü)
C#:
using System.Security.Cryptography;
using System.Text;

public static string MD5Sifrele(string input)
{
    using (MD5 md5 = MD5.Create())
    {
        byte[] inputBytes = Encoding.UTF8.GetBytes(input);
        byte[] hashBytes = md5.ComputeHash(inputBytes);
        StringBuilder sb = new StringBuilder();
        foreach (byte b in hashBytes)
            sb.Append(b.ToString("X2"));
        return sb.ToString();
    }
}
⚠️ MD5 günümüzde kırılabilir olduğundan parola gibi hassas veriler için önerilmez.

🔸 2. SHA256 Şifreleme (Tek Yönlü - Daha Güvenli)
C#:
using System.Security.Cryptography;
using System.Text;

public static string SHA256Sifrele(string input)
{
    using (SHA256 sha256 = SHA256.Create())
    {
        byte[] bytes = Encoding.UTF8.GetBytes(input);
        byte[] hash = sha256.ComputeHash(bytes);
        StringBuilder sb = new StringBuilder();
        foreach (byte b in hash)
            sb.Append(b.ToString("x2"));
        return sb.ToString();
    }
}

🔸 3. AES ile Şifreleme / Deşifreleme (Çift Yönlü)
C#:
using System.Security.Cryptography;
using System.Text;

public static string AESEncrypt(string plainText, string key)
{
    byte[] keyBytes = Encoding.UTF8.GetBytes(key.PadRight(32));
    byte[] iv = new byte[16];
    using (Aes aes = Aes.Create())
    {
        aes.Key = keyBytes;
        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 AESDecrypt(string encryptedText, string key)
{
    byte[] keyBytes = Encoding.UTF8.GetBytes(key.PadRight(32));
    byte[] iv = new byte[16];
    byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
    using (Aes aes = Aes.Create())
    {
        aes.Key = keyBytes;
        aes.IV = iv;
        ICryptoTransform decryptor = aes.CreateDecryptor();
        byte[] decrypted = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
        return Encoding.UTF8.GetString(decrypted);
    }
}
Bu yöntemle veriyi şifreleyip tekrar çözebilirsin. Key uzunluğu 32 karaktere tamamlanmalı.

🔸 4. Base64 Encode / Decode (Kodlama - Şifreleme Değil)
C#:
public static string EncodeBase64(string plainText)
{
    byte[] bytes = Encoding.UTF8.GetBytes(plainText);
    return Convert.ToBase64String(bytes);
}

public static string DecodeBase64(string encodedText)
{
    byte[] bytes = Convert.FromBase64String(encodedText);
    return Encoding.UTF8.GetString(bytes);
}
⚠️ Base64 sadece görünmez karakterleri metne çevirir. Şifreleme değildir, kolayca çözülebilir.

🏁 Sonuç:
C# ile şifreleme oldukça kolay ve güvenlidir.
- Parola için SHA256 önerilir
- Veriyi çözerek saklayacaksan AES kullan
- Dosya, bağlantı vb. dönüşümler için Base64 tercih edebilirsin


📚 Daha Fazla Oku:
 
Geri
Üst