IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

C# AES Cryptage (Comment ça fonctionne pour les développeurs)

Jacob Mellor, Directeur technique @ Team Iron
Jacob Mellor
Updated: 21 avril 2026

AES (Advanced Encryption Standard) est l'un des algorithmes de cryptage symétrique les plus couramment utilisés. Il utilise la même clé pour chiffrer et déchiffrer les données, rendant le chiffrement AES efficace et rapide pour sécuriser les données sensibles dans de nombreuses applications.

Ce tutoriel se concentrera sur le cryptage AES en C#, en utilisant la classe AES pour chiffrer et déchiffrer des données et la bibliothèque IronPDF. Nous couvrirons des exemples pratiques, passerons en revue le processus de chiffrement et verrons comment utiliser le mode de chaîne de blocs de chiffrement (CBC) pour augmenter la sécurité. Nous discuterons également de la gestion des clés de chiffrement et du rôle du vecteur d'initialisation (IV).

Introduction of AES Encryption in C#

Advanced Encryption Standard (AES) est un algorithme de chiffrement symétrique normalisé par le National Institute of Standards and Technology (NIST). L'algorithme peut avoir des tailles de clés de 128, 192 ou 256 bits et est hautement sécurisé pour chiffrer des données confidentielles. Il utilise la même clé de chiffrement pour chiffrer et déchiffrer les données.

AES fonctionne en divisant les données originales en blocs et en appliquant des transformations sur ces blocs. Il fonctionne dans différents modes de chiffrement, tels que CBC (Cipher Block Chaining) et Electronic CodeBook (ECB), chacun offrant différentes caractéristiques de sécurité.

How AES Works in C#

L'algorithme de chiffrement AES en C# fait partie de l'espace de noms System.Security.Cryptography. Cet espace de noms inclut la classe AES, qui nous permet de créer une instance d'AES, de spécifier la taille de la clé, le mode de chiffrement et le mode de remplissage, puis de chiffrer et déchiffrer les données à l'aide d'une clé secrète.

Pour utiliser AES en C#, suivez ces étapes de base :

  1. Créez une instance de la classe AES en utilisant Aes.Create().
  2. Définissez la clé, l'IV et d'autres paramètres pertinents comme le mode de chiffrement.
  3. Chiffrez les données en utilisant l'interface ICryptoTransform et écrivez-les dans un MemoryStream.
  4. Déchiffrez les données en utilisant la même clé et l'IV.

Créons un processus de chiffrement de base et un programme de déchiffrement en C#.

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# Chiffrement AES (Comment cela fonctionne pour les développeurs) : Figure 1 - Sortie de chiffrement et déchiffrement utilisant Memory Stream

Explication du code

  1. Aes.Create() : Cela crée une nouvelle instance de l'algorithme de chiffrement AES.
  2. aes.Key : La clé utilisée à la fois pour le chiffrement et le déchiffrement. Elle doit avoir une taille valide, telle que 128 bits (16 octets), 192 bits ou 256 bits.
  3. aes.IV : Le vecteur d'initialisation (IV), est utilisé pour randomiser le processus de chiffrement. Dans cet exemple, nous utilisons un IV de zéros pour la simplicité.
  4. MemoryStream : Cela nous permet de travailler avec les données chiffrées sous forme de flux d'octets.
  5. CryptoStream : Il transforme le flux de données (chiffrement ou déchiffrement).

Exemple avancé : chiffrement AES avec clé et IV personnalisés

Construisons sur l'exemple précédent en générant une clé aléatoire et un IV, assurant un chiffrement plus sécurisé.

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());
        }
    }
}

Dans ce cas, nous générons une nouvelle clé et un IV à chaque fois que la fonction est appelée. Cela offre un chiffrement plus robuste car la même clé n'est pas réutilisée pour chaque opération. AES supporte les tailles de clé telles que 128, 192 et 256 bits.

Déchiffrement des données avec AES

Le déchiffrement est le processus inverse pour chiffrer les données. Dans nos exemples, la même clé et l'IV utilisés pour le chiffrement doivent être fournis pour déchiffrer les données. Le processus de déchiffrement consiste à convertir les données chiffrées en leur forme d'origine.

Voici un exemple qui utilise les données préalablement chiffrées :

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();
                }
            }
        }
    }
}

Ce code déchiffre les données chiffrées en les ramenant aux données d'origine.

IronPDF avec chiffrement AES

IronPDF est une bibliothèque .NET simple et conviviale pour les développeurs, conçue pour générer, éditer et manipuler des PDF en utilisant un code C# simple. Elle permet aux développeurs de créer des documents PDF directement à partir de HTML, CSS et JavaScript, ce qui peut être extrêmement utile pour générer dynamiquement des rapports, des factures ou d'autres documents. Avec un support pour la fusion, la division et même l'ajout de fonctionnalités de sécurité comme des mots de passe ou des signatures numériques, IronPDF est une solution complète pour la génération de PDF dans les applications .NET.

Intégration d'IronPDF avec chiffrement AES

C# Chiffrement AES (Comment cela fonctionne pour les développeurs) : Figure 2 - IronPDF

Lorsque vous générez des rapports ou des documents sensibles, vous pouvez avoir besoin de vous assurer que les données dans ces PDF sont chiffrées avant d'être partagées. Le chiffrement AES (Advanced Encryption Standard) est une solution parfaite pour chiffrer en toute sécurité le contenu des fichiers PDF. En combinant IronPDF et le chiffrement AES, vous pouvez protéger les données de vos PDF tout en gardant la possibilité de travailler avec le document lui-même.

Étape 1 : Créer un PDF avec IronPDF

Utilisez la classe ChromePdfRenderer pour générer un PDF à partir de contenu HTML et l'enregistrer dans un fichier :

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");

Étape 2 : Chiffrer le PDF en utilisant AES

Une fois le PDF créé, chiffrez-le avec AES :

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());
    }
}

Conclusion

L'intégration d'IronPDF avec le chiffrement AES vous permet de générer des documents dynamiques et sécurisés qui sont à la fois accessibles et chiffrés. Que ce soit pour développer des applications nécessitant une génération de documents sécurisée ou pour gérer des rapports sensibles, la combinaison d'IronPDF avec un chiffrement solide protège vos données. IronPDF simplifie le travail avec les PDF, tandis qu'AES garantit que le contenu reste sécurisé.

IronPDF offre une version d'essai gratuite, permettant aux développeurs d'explorer ses fonctionnalités avant de s'engager. Si vous êtes prêt à implémenter IronPDF dans vos projets, les licences commencent à $999 pour un achat unique.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise