IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

C# AES Şifreleme (Geliştiriciler İçin Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

AES (Advanced Encryption Standard), en yaygın kullanılan simetrik şifreleme algoritmalarından biridir. Verileri şifrelemek ve şifresini çözmek için aynı anahtarı kullanır, bu da AES şifrelemesini birçok uygulamada hassas verileri güvence altına almak için verimli ve hızlı hale getirir.

Bu eğitim, C#'ta AES şifreleme, verileri şifrelemek ve şifresini çözmek için AES sınıfını ve IronPDF Kütüphanesi kullanmaya odaklanacaktır. Pratik örnekleri ele alacağız, şifreleme sürecini inceleyeceğiz ve güvenliği artırmak için Cipher Block Chaining (CBC) modunu nasıl kullanacağınızı göreceğiz. Ayrıca şifreleme anahtar yönetimini ve başlangıç vektörünün (IV) rolünü tartışacağız.

Introduction of AES Encryption in C#

Gelişmiş Şifreleme Standardı (AES), Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) tarafından standartlaştırılmış bir simetrik şifreleme algoritmasıdır. Algoritma 128, 192 veya 256 bit anahtar boyutlarına sahip olabilir ve gizli verileri şifrelemek için son derece güvenlidir. Verileri şifrelemek ve şifresini çözmek için aynı şifreleme anahtarını kullanır.

AES, orijinal verileri bloklara bölerek ve o bloklar üzerinde dönüştürmeler uygulayarak çalışır. Farklı şifre modlarında çalışır, örneğin CBC (Cipher Block Chaining) ve Elektronik Kod Defteri (ECB) gibi, her biri farklı güvenlik özellikleri sağlar.

How AES Works in C#

C#'taki AES şifreleme algoritması, System.Security.Cryptography ad alanının bir parçasıdır. Bu ad alanı, bize AES'nin bir örneğini oluşturma, anahtar boyutunu, şifre modunu ve dolgu modunu belirlemeyi ve ardından gizli bir anahtarı kullanarak verileri şifreleme ve şifresini çözme olanağı tanıyan AES sınıfını içerir.

C#'ta AES kullanmak için bu temel adımları izleyin:

  1. AES sınıfının bir örneğini Aes.Create() kullanarak oluşturun.
  2. Anahtar, IV ve şifre modu gibi diğer ilgili parametreleri ayarlayın.
  3. Verileri ICryptoTransform arayüzünü kullanarak şifreleyin ve bir MemoryStream'e yazın.
  4. Aynı anahtar ve IV kullanarak verileri çözün.

C#'ta temel bir şifreleme süreci ve şifre çözme programı oluşturalım.

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

class Program
{
    // Declare a static byte array for encrypted data
    public static byte[] encryptedData;

    // Main method to demonstrate encryption and decryption
    public static void Main(string[] args)
    {
        // String plaintext to be encrypted
        string plaintext = "This is some sensitive data!";
        string key = "abcdefghijklmnop"; // 128-bit key (16 characters)

        // Encrypt the plaintext
        string ciphertext = Encrypt(plaintext, key);
        Console.WriteLine("Encrypted Data: " + ciphertext);

        // Decrypt the ciphertext
        string decryptedData = Decrypt(ciphertext, key);
        Console.WriteLine("Decrypted Data: " + decryptedData);
    }

    // Method to encrypt data
    public static string Encrypt(string plaintext, string key)
    {
        // Create a new instance of the AES encryption algorithm
        using (Aes aes = Aes.Create())
        {
            aes.Key = Encoding.UTF8.GetBytes(key);
            aes.IV = new byte[16]; // Initialization vector (IV)

            // Create an encryptor to perform the stream transform
            ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);

            // Create the streams used for encryption
            using (MemoryStream ms = new MemoryStream())
            {
                // Create a CryptoStream using the encryptor
                using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                {
                    using (StreamWriter sw = new StreamWriter(cs))
                    {
                        sw.Write(plaintext);
                    }
                }
                // Store the encrypted data in the public static byte array
                encryptedData = ms.ToArray();
                return Convert.ToBase64String(encryptedData);
            }
        }
    }

    // Method to decrypt data
    public static string Decrypt(string ciphertext, string key)
    {
        using (Aes aes = Aes.Create())
        {
            aes.Key = Encoding.UTF8.GetBytes(key);
            aes.IV = new byte[16]; // Initialization vector (IV)

            // Create a decryptor to perform the stream transform
            ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);

            // Create the streams used for decryption
            using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(ciphertext)))
            {
                using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
                {
                    using (StreamReader sr = new StreamReader(cs))
                    {
                        return sr.ReadToEnd();
                    }
                }
            }
        }
    }
}

C# AES Şifreleme (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Bellek Akışı kullanarak Şifreleme ve Deşifreleme Çıktısı

Kodun Açıklaması

  1. Aes.Create(): Bu, AES şifreleme algoritmasının yeni bir örneğini oluşturur.
  2. aes.Key: Hem şifreleme hem de deşifreleme için kullanılan anahtar. Geçerli boyutta olmalıdır, örneğin 128 bit (16 bayt), 192 bit veya 256 bit.
  3. aes.IV: Başlatma vektörü (IV), şifreleme sürecini rastgele hale getirmek için kullanılır. Bu örnekte, basitlik için sıfırlardan oluşan bir IV kullanıyoruz.
  4. MemoryStream: Bu sayede şifreli verilerle bir bayt akışı olarak çalışabiliriz.
  5. CryptoStream: Veri akışını (şifreleme veya şifre çözme) dönüştürür.

Gelişmiş Örnek: Özelleştirilmiş Anahtar ve IV ile AES Şifreleme

Önceki örneğe, şifrelemenin daha güvenli olmasını sağlamak için rastgele bir anahtar ve IV üreterek devam edelim.

public static string EncryptData(string plaintext)
{
    using (Aes aes = Aes.Create())
    {
        aes.Key = new byte[32]; // AES-256 requires a 256-bit key (32 bytes)
        aes.IV = new byte[16];  // 128-bit block size

        // Randomly generate key and IV
        using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
        {
            rng.GetBytes(aes.Key); // Generate a random key
            rng.GetBytes(aes.IV);  // Generate a random IV
        }

        // Create an encryptor to perform the stream transform
        ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);

        // Create the streams used for encryption
        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
            {
                using (StreamWriter sw = new StreamWriter(cs))
                {
                    sw.Write(plaintext);
                }
            }
            return Convert.ToBase64String(ms.ToArray());
        }
    }
}

Bu durumda, her fonksiyon çağrıldığında yeni bir anahtar ve IV oluşturuyoruz. Bu, aynı anahtarın her işlem için kullanılmaması nedeniyle daha güçlü bir şifreleme sağlar. AES, 128, 192 ve 256 bit gibi anahtar boyutlarını destekler.

AES ile Veri Şifre Çözme

Şifre çözme, veri şifreleme için tersine bir süreçtir. Örneklerimizde, şifre çözme işlemi için daha önce şifreleme için kullanılan aynı anahtar ve IV sağlanmalıdır. Şifre çözme süreci, şifreli verileri orijinal haline geri döndürmeyi içerir.

Bu, daha önce şifrelenmiş verileri kullanan bir örnektir:

public static string DecryptData(string ciphertext, byte[] key, byte[] iv)
{
    using (Aes aes = Aes.Create())
    {
        aes.Key = key;
        aes.IV = iv;

        // Create a decryptor to perform the stream transform
        ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);

        // Create the streams used for decryption
        using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(ciphertext)))
        {
            using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
            {
                using (StreamReader sr = new StreamReader(cs))
                {
                    return sr.ReadToEnd();
                }
            }
        }
    }
}

Bu kod, şifreli verileri tekrar orijinal veriye dönüştürür.

IronPDF ile AES Şifreleme

IronPDF, basit ve geliştirici dostu bir .NET kütüphanesidir ve basit C# kodu kullanarak PDF'ler oluşturmak, düzenlemek ve işlemek için tasarlanmıştır. Geliştiricilerin HTML, CSS ve JavaScript'ten doğrudan PDF belgeleri oluşturmasına olanak tanır, bu da dinamik olarak raporlar, faturalar veya diğer belgeler oluşturmak için son derece faydalıdır. Birleştirme, ayırma ve hatta parolalar veya dijital imzalar gibi güvenlik özellikleri eklemeyi destekleyen IronPDF, .NET uygulamalarında PDF oluşturma için kapsamlı bir çözümdür.

IronPDF'i AES Şifreleme ile Entegre Etme

C# AES Şifreleme (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - IronPDF

Hassas raporlar veya belgeler oluşturduğunuzda, içindeki verilerin paylaşmadan önce şifrelenmesi gerekebilir. AES (Advanced Encryption Standard) şifreleme, PDF dosyalarının içeriğini güvenli bir şekilde şifrelemek için mükemmel bir çözümdür. IronPDF ve AES şifrelemesini birleştirerek, PDF'leriniz içindeki verileri koruyabilirken belgenin kendisiyle çalışma yeteneğini sürdürebilirsiniz.

Adım 1: IronPDF Kullanarak Bir PDF Oluşturun

ChromePdfRenderer sınıfını kullanarak HTML içeriğinden bir PDF oluşturun ve bir dosyaya kaydedin:

var htmlContent = "<h1>Confidential</h1><p>This is sensitive data.</p>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs(@"C:\Reports\ConfidentialReport.pdf");

Adım 2: AES Kullanarak PDF'i Şifreleyin

PDF oluşturulduktan sonra, AES ile şifreleyin:

byte[] pdfBytes = File.ReadAllBytes(@"C:\Reports\ConfidentialReport.pdf");
using (Aes aes = Aes.Create())
{
    aes.Key = Encoding.UTF8.GetBytes("abcdefghijklmnop");
    aes.IV = new byte[16];
    using (var encryptor = aes.CreateEncryptor(aes.Key, aes.IV))
    using (var ms = new MemoryStream())
    {
        using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
        {
            cs.Write(pdfBytes, 0, pdfBytes.Length);
        }
        File.WriteAllBytes(@"C:\Reports\ConfidentialReport.encrypted", ms.ToArray());
    }
}

Sonuç

C# AES Şifreleme (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Lisanslama

IronPDF'i AES şifreleme ile entegre etmek, hem erişilebilir hem de şifreli dinamik, güvenli belgeler oluşturmanıza olanak tanır. Güvenli belge oluşturma gerektiren uygulamalar geliştirirken veya hassas raporlar yönetirken, IronPDF'i sağlam bir şifrelemeyle birleştirmek verilerinizi korur. IronPDF, PDF'lerle çalışmayı basitleştirir, AES ise içeriğin güvenli kalmasını garanti eder.

IronPDF, geliştiricilerin taahhüt etmeden önce özelliklerini keşfetmelerini kolaylaştıran bir ücretsiz deneme sunar. Projelerinize IronPDF'i uygulamaya hazırsanız, lisanslar tek seferlik satın alma için $999'den başlamaktadır.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez