Encriptación AES

Herramienta gratuita para encriptar y desencriptar texto usando el estándar AES (Advanced Encryption Standard).

Clave por defecto: 16 caracteres
IV por defecto: 16 caracteres
¿Qué es AES?

El Advanced Encryption Standard (AES) es un algoritmo de cifrado simétrico utilizado mundialmente para proteger información sensible. Es el estándar adoptado por el gobierno de Estados Unidos y utilizado en aplicaciones de seguridad en todo el mundo.

Esta herramienta utiliza AES-128 con modo CBC y vector de inicialización (IV) para proporcionar un cifrado seguro de tus datos.

Características
  • Cifrado simétrico AES-128
  • Modo CBC (Cipher Block Chaining)
  • Codificación Base64 del resultado
  • 100% gratuito, sin registro necesario
  • Procesamiento del lado del servidor
Explicación técnica
Valores por defecto (actualizados):
Parámetro Valor Longitud
Key ensaladaDeTomate 16 caracteres (128 bits)
IV jugoDeNaranja 16 caracteres (128 bits)
Cómo funciona internamente:
  1. Key (Clave): El texto que ingresas se convierte a bytes UTF-8. Si tiene menos de 16 bytes, se rellena con ceros; si tiene más, se trunca a 16 bytes (AES-128). Máximo permitido: 32 caracteres (AES-256).
  2. IV (Vector de inicialización): Debe tener exactamente 16 caracteres (128 bits). Se usa para que el mismo texto con la misma clave produzca cifrados diferentes cada vez.
  3. Modo: CBC (Cipher Block Chaining) - cada bloque depende del anterior.
  4. Padding: PKCS7 - rellena el último bloque si no es múltiplo de 16 bytes.
  5. Salida: Base64 del texto cifrado (para transportar binario como texto).
Notas de seguridad:
  • Esta herramienta usa la clave "tal cual" (sin derivación PBKDF2). Para producción, usa Rfc2898DeriveBytes con salt e iteraciones.
  • El IV no es secreto, pero debe ser único por cada cifrado con la misma clave.
  • El procesamiento ocurre en el servidor (no en el navegador).
Ejemplo de uso en C# (.NET Framework 4.8):
using System;
using System.Security.Cryptography;
using System.Text;

byte[] key = Encoding.UTF8.GetBytes("ensaladaDeTomate"); // 16 bytes
byte[] iv  = Encoding.UTF8.GetBytes("jugoDeNaranja123"); // 16 bytes

using (Aes aes = Aes.Create())
{
    aes.Key = key;
    aes.IV = iv;
    aes.Mode = CipherMode.CBC;
    aes.Padding = PaddingMode.PKCS7;

    // Encriptar
    string texto = "Hola mundo";
    byte[] cifrado = aes.CreateEncryptor().TransformFinalBlock(Encoding.UTF8.GetBytes(texto), 0, texto.Length);
    string base64 = Convert.ToBase64String(cifrado);

    // Desencriptar
    byte[] descifrado = aes.CreateDecryptor().TransformFinalBlock(Convert.FromBase64String(base64), 0, Convert.FromBase64String(base64).Length);
    string original = Encoding.UTF8.GetString(descifrado);
}