En Güvenli ve En Çok Tercih Edilen Şifreleme Algoritmaları: AES-256, RSA-4096 ve SHA-256
Kriptografi, dijital dünyanın en önemli güvenlik bileşenlerinden biridir. Verilerin güvenli iletimi, şifrelenmesi ve doğrulanması için simetrik ve asimetrik şifreleme algoritmaları kullanılır. Aşağıda detaylandıracağımız...
Kriptografi, dijital dünyanın en önemli güvenlik bileşenlerinden biridir. Verilerin güvenli iletimi, şifrelenmesi ve doğrulanması için simetrik ve asimetrik şifreleme algoritmaları kullanılır. Aşağıda detaylandıracağımız AES-256, RSA-4096 ve SHA-256 algoritmaları, günümüzün en güvenilir şifreleme ve veri doğrulama algoritmalarıdır. Bu yazıda hem bu algoritmaların teorik bilgilerine değinecek hem de .NET Core'da kullanımını gösteren örnek kodlar vereceğiz.
AES-256 (Simetrik Şifreleme)
AES-256 (Advanced Encryption Standard), simetrik bir şifreleme algoritmasıdır ve 256 bitlik anahtar kullanarak veriyi şifreler. AES, hızlı ve güvenli yapısıyla veri güvenliğinin sağlanmasında yaygın olarak kullanılır.
Güvenlik Seviyesi
AES-256’nın güvenliği son derece yüksektir. Bilinen saldırı yöntemlerine karşı oldukça dirençlidir ve 256 bit uzunluğundaki anahtarıyla pratik olarak kırılması imkansızdır.
.NET Core’da AES-256 Kullanım Örneği
Aşağıdaki örnek, bir metni AES-256 ile şifreleme ve şifre çözme işlemlerini göstermektedir:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class AES256Encryption
{
private static readonly string key = "your-256-bit-secret-key-should-be-32-chars-long!";
public static string Encrypt(string plainText)
{
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Encoding.UTF8.GetBytes(key);
aesAlg.IV = aesAlg.Key.Take(16).ToArray(); // AES-256 uses a 16-byte IV
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
return Convert.ToBase64String(msEncrypt.ToArray());
}
}
}
}
public static string Decrypt(string cipherText)
{
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Encoding.UTF8.GetBytes(key);
aesAlg.IV = aesAlg.Key.Take(16).ToArray();
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(Convert.FromBase64String(cipherText)))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
}
}
class Program
{
static void Main(string[] args)
{
string originalText = "Bu bir AES-256 şifreleme örneğidir.";
// Şifreleme
string encryptedText = AES256Encryption.Encrypt(originalText);
Console.WriteLine($"Şifrelenmiş Metin: {encryptedText}");
// Şifre Çözme
string decryptedText = AES256Encryption.Decrypt(encryptedText);
Console.WriteLine($"Çözülmüş Metin: {decryptedText}");
}
}
Bu kodda:
- Encrypt metodu ile düz metin şifrelenir.
- Decrypt metodu ile şifrelenmiş metin çözülür.
RSA-4096 (Asimetrik Şifreleme)
RSA-4096 (Rivest–Shamir–Adleman), asimetrik bir şifreleme algoritmasıdır ve 4096 bitlik anahtar uzunluğu kullanır. Asimetrik şifreleme iki anahtar kullanır: bir açık (public) anahtar ve bir gizli (private) anahtar. Bu iki anahtar, birbirine bağlıdır ve biriyle şifrelenen veriler, yalnızca diğer anahtarla çözülebilir.
Güvenlik Seviyesi
RSA-4096'nın güvenliği, anahtar uzunluğuna bağlıdır ve oldukça yüksek güvenlik sunar. RSA’nın kırılması pratik olarak mümkün değildir ve yüksek güvenlik gereksinimlerinde tercih edilir.
.NET Core’da RSA-4096 Kullanım Örneği
RSA-4096 algoritmasını kullanarak şifreleme ve şifre çözme işlemleri şu şekilde yapılabilir:
using System;
using System.Security.Cryptography;
using System.Text;
public class RSA4096Encryption
{
private static RSAParameters _privateKey;
private static RSAParameters _publicKey;
public static void GenerateKeys()
{
using (RSA rsa = RSA.Create(4096))
{
_privateKey = rsa.ExportParameters(true);
_publicKey = rsa.ExportParameters(false);
}
}
public static byte[] Encrypt(string plainText)
{
using (RSA rsa = RSA.Create())
{
rsa.ImportParameters(_publicKey);
return rsa.Encrypt(Encoding.UTF8.GetBytes(plainText), RSAEncryptionPadding.OaepSHA256);
}
}
public static string Decrypt(byte[] cipherText)
{
using (RSA rsa = RSA.Create())
{
rsa.ImportParameters(_privateKey);
return Encoding.UTF8.GetString(rsa.Decrypt(cipherText, RSAEncryptionPadding.OaepSHA256));
}
}
}
class Program
{
static void Main(string[] args)
{
string originalText = "Bu bir RSA-4096 şifreleme örneğidir.";
// Anahtarları oluştur
RSA4096Encryption.GenerateKeys();
// Şifreleme
byte[] encryptedData = RSA4096Encryption.Encrypt(originalText);
Console.WriteLine($"Şifrelenmiş Veri (Base64): {Convert.ToBase64String(encryptedData)}");
// Şifre Çözme
string decryptedText = RSA4096Encryption.Decrypt(encryptedData);
Console.WriteLine($"Çözülmüş Veri: {decryptedText}");
}
}
Bu örnekte:
- GenerateKeys metodu, RSA anahtar çiftini oluşturur.
- Encrypt metodu, düz metni açık anahtar kullanarak şifreler.
- Decrypt metodu, şifrelenmiş veriyi özel anahtar kullanarak çözer.
SHA-256 (Hash Fonksiyonu)
SHA-256 (Secure Hash Algorithm 256), bir hash fonksiyonudur. Veriyi şifrelemek yerine, veriden sabit uzunlukta bir özet (hash) oluşturur. Hash işlemleri genellikle veri bütünlüğünü doğrulamak için kullanılır.
Güvenlik Seviyesi
SHA-256, çakışma saldırılarına karşı oldukça dayanıklıdır ve blok zincirleri (blockchain) gibi uygulamalarda kullanılarak güvenilirliğini kanıtlamıştır.
.NET Core’da SHA-256 Kullanım Örneği
Aşağıda, SHA-256 ile bir metnin hash’inin nasıl oluşturulacağını gösteren bir örnek bulunmaktadır
using System;
using System.Security.Cryptography;
using System.Text;
public class SHA256Hashing
{
public static string ComputeHash(string plainText)
{
using (SHA256 sha256 = SHA256.Create())
{
byte[] bytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(plainText));
StringBuilder builder = new StringBuilder();
foreach (byte b in bytes)
{
builder.Append(b.ToString("x2"));
}
return builder.ToString();
}
}
}
class Program
{
static void Main(string[] args)
{
string originalText = "Bu bir SHA-256 hash fonksiyonu örneğidir.";
// Hash Hesaplama
string hashValue = SHA256Hashing.ComputeHash(originalText);
Console.WriteLine($"SHA-256 Hash Değeri: {hashValue}");
}
}
Bu kodda:
- ComputeHash metodu, verilen düz metnin hash’ini hesaplar ve hexadecimal formatta çıktısını döner.
Sonuç
Bu yazıda, en güvenli ve en çok tercih edilen kriptografik algoritmalardan olan AES-256, RSA-4096 ve SHA-256’nın .NET Core'da nasıl kullanılabileceğini örnek kodlarla açıkladık. Her bir algoritmanın güvenlik seviyeleri, performans özellikleri ve kullanım alanları detaylıca incelendi. Bu örnekleri projelerinde kullanarak veri güvenliğini sağlayabilirsin.