Inicio › Herramientas para desarrolladores › Herramienta para cifrar texto

Herramienta para cifrar texto

Protege un mensaje, una nota o un secreto con una contraseña: el texto se cifra con AES-256-GCM usando una clave derivada con PBKDF2-SHA256, y obtienes una cadena Base64 que solo puede descifrar quien tenga la contraseña. Todo ocurre en tu dispositivo.

Última actualización:

AES-256-GCM · PBKDF2-SHA256 · sal e IV aleatorios · se ejecuta localmente con la API WebCrypto. La contraseña nunca se guarda; si la pierdes, el texto no se puede recuperar.

Publicidad
Publicidad

Cómo usar Herramienta para cifrar texto

  1. Elige Cifrar y escribe o pega el texto que quieres proteger.
  2. Introduce una contraseña segura o pulsa Generar para crear una. Compártela con el destinatario por otro canal.
  3. Pulsa Cifrar texto y copia el resultado en Base64.
  4. Para leerlo, elige Descifrar, pega el texto cifrado, introduce la misma contraseña y pulsa Descifrar texto.
  5. Si el descifrado falla, revisa la contraseña; cualquier cambio en el texto cifrado también se detecta.

Cómo funciona el cifrado

  1. Derivación de clave: se genera una sal aleatoria de 16 bytes y se deriva una clave de 256 bits a partir de tu contraseña con PBKDF2-HMAC-SHA256 (600,000 iteraciones por defecto, como recomendó OWASP en 2023). La sal hace que cada clave sea única y las iteraciones hacen que cada intento de adivinar la contraseña sea lento.
  2. Cifrado: el texto UTF-8 se cifra con AES-256 en modo Galois/Counter (GCM) usando un IV aleatorio de 12 bytes. GCM añade una etiqueta de autenticación de 16 bytes que detecta cualquier cambio en los datos o una clave incorrecta.
  3. Empaquetado: todo lo necesario para descifrar, excepto la contraseña, se guarda en una sola cadena Base64.

Formato de salida

BytesContenido
1Versión del formato, siempre 0x01
4Número de iteraciones de PBKDF2, sin signo, big-endian (600,000 = 00 09 27 C0)
16Sal
12IV de AES-GCM (nonce)
restoTexto cifrado seguido de la etiqueta GCM de 16 bytes

Toda la secuencia de bytes se codifica en Base64 (estándar o apta para URL). Por eso el texto cifrado ocupa aproximadamente 4/3 del tamaño original más 66 caracteres adicionales.

Descifrar el resultado en Python

import base64
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.primitives.ciphers.aead import AESGCM

def decrypt(b64_text, password):
    s = b64_text.strip().replace('-', '+').replace('_', '/')
    data = base64.b64decode(s + '=' * (-len(s) % 4))
    assert data[0] == 1
    iterations = int.from_bytes(data[1:5], 'big')
    salt, iv, ct = data[5:21], data[21:33], data[33:]
    key = PBKDF2HMAC(hashes.SHA256(), 32, salt, iterations).derive(password.encode())
    return AESGCM(key).decrypt(iv, ct, None).decode()

Cómo elegir una buena contraseña

  • Usa al menos 12 caracteres aleatorios o una frase de contraseña de cuatro o más palabras aleatorias. El indicador de fortaleza estima la entropía; apunta a Fuerte (65+ bits).
  • Nunca reutilices una contraseña de otra cuenta y envíasela al destinatario por un canal distinto al del texto cifrado.
  • Más iteraciones de PBKDF2 ralentizan a los atacantes, pero no pueden salvar una contraseña débil: cada carácter adicional añade mucha más protección que duplicar las iteraciones.

Preguntas frecuentes

¿Qué tan seguro es este cifrado?

AES-256-GCM es el mismo cifrado autenticado que se usa en TLS 1.3 y se considera seguro. En la práctica, el punto débil es la contraseña: la clave se deriva de ella con PBKDF2-SHA256 y 600,000 iteraciones (la recomendación de OWASP de 2023), lo que ralentiza los intentos de adivinarla, pero una contraseña corta o común aún puede descifrarse. Usa una contraseña aleatoria larga o una frase de contraseña.

¿Pueden recuperar mi texto si olvido la contraseña?

No. La contraseña nunca se guarda ni se envía a ningún sitio, y no hay puerta trasera. Sin la contraseña exacta, el texto cifrado no se puede descifrar.

¿Se envía mi texto a un servidor?

No. El cifrado y el descifrado se ejecutan en tu navegador con la API WebCrypto integrada. Puedes desconectarte de internet una vez cargada la página y la herramienta sigue funcionando.

¿Por qué el resultado es distinto cada vez que cifro el mismo texto?

Cada cifrado usa una nueva sal aleatoria y un nuevo vector de inicialización (IV). Es intencionado: mensajes idénticos producen textos cifrados sin relación entre sí, de modo que un observador no puede saber que dos mensajes son iguales.

¿Qué significa 'contraseña incorrecta o texto modificado'?

AES-GCM añade una etiqueta de autenticación de 128 bits. Si la contraseña es incorrecta, o si incluso un solo carácter del texto cifrado se cambió o se perdió al copiarlo, la comprobación de la etiqueta falla y la herramienta se niega a mostrar nada, en lugar de mostrar texto dañado.

¿Pueden otros programas descifrar el resultado?

Sí. El formato está documentado en esta página: byte de versión, número de iteraciones, sal, IV y texto cifrado AES-GCM con etiqueta, todo codificado en Base64. Cualquier lenguaje con PBKDF2 y AES-GCM, como el paquete cryptography de Python, crypto de Node.js o Java, puede descifrarlo con la contraseña.

¿Es seguro enviar el texto cifrado por correo o chat?

Sí, el texto cifrado se puede compartir abiertamente. Envía la contraseña por separado, por ejemplo por teléfono o en persona, nunca en el mismo mensaje que el texto cifrado.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Codificadores, hashes y criptografía →