Toolonit
  1. Inicio
  2. Cifrado
  3. Cifrar / descifrar
  4. ChaCha20

Cifrado y descifrado ChaCha20

Cifra y descifra texto con ChaCha20-Poly1305 o con ChaCha20 simple.

Cifrar con

La necesitarás de nuevo para descifrar. Nada de lo que escribes sale de esta página.

Iteraciones de PBKDF2

El valor predeterminado de OpenSSL es 10.000. Sirve cualquier número: cuantas más, más lenta de adivinar es la contraseña; para descifrar hace falta el mismo número.

Modo

Autenticado: detecta una contraseña o clave incorrecta, o cualquier cambio en el texto.

Salida en
Lo mismo con OpenSSL

El comando enc de OpenSSL no puede leer ChaCha20-Poly1305. Descífralo aquí, o desde código con una biblioteca criptográfica: la etiqueta de 16 bytes va tras el texto cifrado.

ChaCha20-Poly1305 (RFC 8439) es el cifrado autenticado que usan TLS 1.3 y WireGuard: cifra el texto y además detecta cualquier cambio en él o una contraseña incorrecta. Aquí puedes cifrar texto con una contraseña o con tu propia clave de 256 bits y un nonce de 12 bytes, o pegar un texto cifrado en Base64 o hexadecimal para descifrarlo. Con contraseña, la clave y el nonce se derivan con PBKDF2-HMAC-SHA256 y una sal aleatoria, como en openssl enc -pbkdf2, y la salida es Salted__, la sal, el texto cifrado y la etiqueta Poly1305 de 16 bytes. También está ChaCha20 simple, sin etiqueta, con la estructura del chacha20 de OpenSSL. Tu texto, tus contraseñas y tus claves nunca salen de tu dispositivo: todo se ejecuta en tu navegador, gratis y sin registro.

Cómo cifrar texto con ChaCha20-Poly1305

  1. Elige Cifrar o Descifrar. Escribe el texto que quieres cifrar o pega el texto en Base64 o hexadecimal que quieres descifrar: el formato se detecta automáticamente.
  2. Escribe una contraseña (Generar crea una segura) o cambia a Clave e IV (hex) e introduce o genera una clave de 64 dígitos y un nonce de 24 dígitos (un IV de 32 dígitos para ChaCha20 simple).
  3. Deja ChaCha20-Poly1305 o elige ChaCha20 para coincidir con openssl enc -chacha20. Para descifrar, usa el mismo modo, la misma contraseña y el mismo número de iteraciones con que se cifró el texto.
  4. Copia o descarga el resultado, o pulsa Intercambiar para pasarlo a la entrada y descifrarlo de nuevo como comprobación.

Funciones

  • ChaCha20-Poly1305 según el RFC 8439: clave de 256 bits, nonce de 12 bytes, etiqueta de 16 bytes
  • ChaCha20 simple con la estructura de OpenSSL: un IV de 16 bytes formado por un contador de 4 bytes en little-endian y el nonce de 12 bytes
  • Modo contraseña: clave y nonce derivados con PBKDF2-HMAC-SHA256 y una sal aleatoria, tras la cabecera Salted__ de openssl enc -pbkdf2
  • Modo Clave e IV: tu propia clave y nonce en hexadecimal, o aleatorios con Generar
  • Con Poly1305, una contraseña o clave incorrecta, o un solo carácter cambiado, hace que el descifrado falle en lugar de devolver basura
  • Sin relleno: el texto cifrado mide lo mismo que el texto, más la etiqueta de 16 bytes con Poly1305
  • El comando openssl enc -chacha20 para ChaCha20 simple

¿Es privado?

Sí. ChaCha20 se ejecuta en WebAssembly dentro de tu navegador, y la contraseña se refuerza con Web Crypto, integrado en el navegador. Nada de lo que escribes (texto, contraseña, clave o nonce) se sube ni se guarda.

Preguntas frecuentes

¿ChaCha20-Poly1305 o ChaCha20 simple?

ChaCha20-Poly1305, el predeterminado, para todo lo nuevo: su etiqueta Poly1305 hace que el descifrado falle si se ha cambiado un solo carácter o la contraseña es incorrecta. ChaCha20 simple solo cifra (una clave incorrecta da bytes ilegibles en vez de un error), así que úsalo solo para coincidir con un sistema que lo use, como openssl enc -chacha20.

¿Puede descifrarlo OpenSSL?

ChaCha20 simple, sí: echo 'U2FsdGVkX1…' | openssl enc -d -chacha20 -pbkdf2 -iter 10000 -a -A en el modo contraseña, o -K <clave hex> -iv <IV hex> en lugar de -pbkdf2 -iter en el modo Clave e IV. ChaCha20-Poly1305, no: openssl enc rechaza los cifrados AEAD. Léelo aquí o desde código: en el modo Clave e IV, la salida es el texto cifrado seguido de la etiqueta de 16 bytes, sin cabecera.

¿Qué pasa si se reutiliza un nonce?

Dos mensajes con la misma clave y el mismo nonce revelan el XOR de sus textos y permiten a un atacante falsificar etiquetas Poly1305. En el modo contraseña no puedes cometer ese error: cada cifrado elige una sal aleatoria nueva, así que la clave, el nonce y la salida son nuevos cada vez. En el modo Clave e IV, pulsa Generar para obtener un nonce nuevo antes de cada mensaje.

¿Es ChaCha20 tan seguro como AES?

Sí. ChaCha20-Poly1305 y AES-GCM son cifrados estándar de TLS 1.3 sin ningún ataque práctico, y ChaCha20 suele ser más rápido en móviles sin aceleración AES por hardware. El punto débil es la contraseña: usa una larga y aleatoria, y el ajuste de 600.000 iteraciones cuando controles ambos extremos.

¿Admite XChaCha20-Poly1305?

No. XChaCha20, la variante de libsodium con nonce de 24 bytes, es una construcción distinta, así que su texto cifrado no se puede descifrar aquí. Esta página usa el nonce de 12 bytes del RFC 8439 y el IV de 16 bytes del chacha20 de OpenSSL. Para cifrar un archivo en lugar de texto, la herramienta Cifrar archivos usa ChaCha20-Poly1305 en el formato age.

Herramientas relacionadas