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.
Cómo usar Herramienta para cifrar texto
- Elige Cifrar y escribe o pega el texto que quieres proteger.
- Introduce una contraseña segura o pulsa Generar para crear una. Compártela con el destinatario por otro canal.
- Pulsa Cifrar texto y copia el resultado en Base64.
- Para leerlo, elige Descifrar, pega el texto cifrado, introduce la misma contraseña y pulsa Descifrar texto.
- Si el descifrado falla, revisa la contraseña; cualquier cambio en el texto cifrado también se detecta.
Cómo funciona el cifrado
- 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.
- 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.
- Empaquetado: todo lo necesario para descifrar, excepto la contraseña, se guarda en una sola cadena Base64.
Formato de salida
| Bytes | Contenido |
|---|---|
| 1 | Versión del formato, siempre 0x01 |
| 4 | Número de iteraciones de PBKDF2, sin signo, big-endian (600,000 = 00 09 27 C0) |
| 16 | Sal |
| 12 | IV de AES-GCM (nonce) |
| resto | Texto 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.