IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

C# Cifrado AES (Cómo Funciona para Desarrolladores)

Jacob Mellor, Chief Technology Officer @ Team Iron
Jacob Mellor
Updated: 21 de abril de 2026

AES (Estándar de Cifrado Avanzado) es uno de los algoritmos de cifrado simétrico más utilizados. Utiliza la misma clave para cifrar y descifrar datos, haciendo que el cifrado AES sea eficiente y rápido para asegurar datos sensibles en muchas aplicaciones.

Este tutorial se centrará en el cifrado AES en C#, usando la clase AES para cifrar y descifrar datos y la biblioteca IronPDF. Cubriremos ejemplos prácticos, recorreremos el proceso de cifrado y veremos cómo usar el modo de encadenamiento de bloques (CBC) para aumentar la seguridad. También discutiremos la gestión de claves de cifrado y el papel del vector de inicialización (IV).

Introduction of AES Encryption in C#

El Estándar de Cifrado Avanzado (AES) es un algoritmo de cifrado simétrico estandarizado por el Instituto Nacional de Estándares y Tecnología (NIST). El algoritmo puede tener tamaños de clave de 128, 192 o 256 bits y es altamente seguro para cifrar datos confidenciales. Utiliza la misma clave de cifrado para cifrar y descifrar datos.

AES funciona dividiendo los datos originales en bloques y aplicando transformaciones a esos bloques. Opera en diferentes modos de cifrado, como CBC (Encadenamiento de Bloques de Cifrado) y Electronic CodeBook (ECB), cada uno de los cuales ofrece diferentes características de seguridad.

How AES Works in C#

El algoritmo de cifrado AES en C# es parte del espacio de nombres System.Security.Cryptography. Este espacio de nombres incluye la clase AES, que nos permite crear una instancia de AES, especificar el tamaño de la clave, el modo de cifrado y el modo de relleno, y luego cifrar y descifrar datos usando una clave secreta.

Para usar AES en C#, siga estos pasos básicos:

  1. Crea una instancia de la clase AES usando Aes.Create().
  2. Establezca la clave, el IV y otros parámetros relevantes como el modo de cifrado.
  3. Cifre los datos usando la interfaz ICryptoTransform y escríbalos en un MemoryStream.
  4. Descifre los datos usando la misma clave y IV.

Vamos a crear un proceso de cifrado básico y un programa de descifrado 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# Cifrado AES (Cómo funciona para desarrolladores): Figura 1 - Salida de encriptación y desencriptación usando Memory Stream

Explicación del código

  1. Aes.Create(): Esto crea una nueva instancia del algoritmo de cifrado AES.
  2. aes.Key: La clave utilizada tanto para cifrado como para descifrado. Debe tener un tamaño válido, como 128 bits (16 bytes), 192 bits o 256 bits.
  3. aes.IV: El vector de inicialización (IV), se utiliza para aleatorizar el proceso de encriptación. En este ejemplo, usamos un IV de ceros por simplicidad.
  4. MemoryStream: Esto nos permite trabajar con los datos cifrados como un flujo de bytes.
  5. CryptoStream: Transforma el flujo de datos (cifrado o descifrado).

Ejemplo avanzado: Cifrado AES con clave e IV personalizados

Vamos a mejorar el ejemplo anterior generando una clave aleatoria y un IV, asegurando que el cifrado sea más seguro.

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

En este caso, generamos una nueva clave y IV cada vez que se llama a la función. Esto proporciona un cifrado más robusto ya que la misma clave no se utiliza para cada operación. AES admite tamaños de clave como 128, 192 y 256 bits.

Descifrar datos con AES

El descifrado es el proceso inverso a cifrar datos. En nuestros ejemplos, la misma clave y IV utilizados para cifrado deben proporcionarse para descifrar los datos. El proceso de descifrado implica convertir los datos cifrados de nuevo a su forma original.

Aquí hay un ejemplo que usa los datos cifrados anteriormente:

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

Este código descifra los datos cifrados de vuelta a los datos originales.

IronPDF con cifrado AES

IronPDF es una biblioteca .NET simple y amigable para desarrolladores diseñada para generar, editar y manipular PDFs usando simple código C#. Permite a los desarrolladores crear documentos PDF directamente desde HTML, CSS y JavaScript, lo cual puede ser increíblemente útil para generar informes dinámicos, facturas u otros documentos. Con soporte para combinar, dividir e incluso agregar características de seguridad como contraseñas o firmas digitales, IronPDF es una solución completa para la generación de PDFs en aplicaciones .NET.

Integración de IronPDF con cifrado AES

C# Cifrado AES (Cómo funciona para desarrolladores): Figura 2 - IronPDF

Cuando genera informes o documentos sensibles, puede ser necesario asegurar que los datos dentro de esos PDFs estén cifrados antes de compartirlos. El cifrado AES (Estándar de Cifrado Avanzado) es una solución perfecta para cifrar de manera segura los contenidos de archivos PDF. Al combinar IronPDF y el cifrado AES, puede proteger los datos dentro de sus PDFs mientras mantiene la capacidad de trabajar con el documento en sí.

Paso 1: Crear un PDF con IronPDF

Use la clase ChromePdfRenderer para generar un PDF a partir de contenido HTML y guardarlo en un archivo:

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

Paso 2: Cifrar el PDF con AES

Una vez creado el PDF, encriptelo con 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());
    }
}

Conclusión

C# Cifrado AES (Cómo funciona para desarrolladores): Figura 3 - Licensing

Integrar IronPDF con cifrado AES le permite generar documentos dinámicos y seguros que son accesibles y cifrados. Ya sea desarrollando aplicaciones que requieran generación de documentos seguros o gestionando informes sensibles, combinar IronPDF con un cifrado sólido protege sus datos. IronPDF simplifica el trabajo con PDFs, mientras que AES garantiza que el contenido permanezca seguro.

IronPDF ofrece una prueba gratuita, lo que facilita a los desarrolladores explorar sus características antes de comprometerse. Si estás listo para implementar IronPDF en tus proyectos, las licencias comienzan en $999 para una compra única.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor is Chief Technology Officer at Iron Software and a visionary engineer pioneering C# PDF technology. As the original developer behind Iron Software's core codebase, he has shaped the company's product architecture since its inception, transforming it alongside CEO Cameron Rimington into a 50+ person company serving NASA, Tesla, and global government agencies.

...
Read More

Related Articles

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuenta
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge related to IronPDF Product Demo

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta