- Cifrar texto. AES-256-GCM con contraseña, varias contraseñas encadenadas o la clave pública del destinatario. El resultado se comparte como texto, enlace o código QR.
- Cifrar archivos de varios GB. Por trozos, escribiendo directamente a disco, sin cargar el archivo entero en memoria.
- Notas que caducan. El mensaje cifrado viaja dentro del propio enlace, con caducidad de una hora a siete días.
- Vault de contraseñas. Cifrado en el propio navegador y con bloqueo automático.
- Borrado seguro. Sobrescribe archivos y carpetas en varias pasadas, la última con datos aleatorios.
- Quince herramientas más. Firmas digitales, códigos 2FA, JWT, HMAC, hashes, esteganografía, limpieza de metadatos EXIF, ZIP cifrados, generador de contraseñas, inspector de certificados X.509 y análisis de entropía y frecuencias.
- Funciona sin conexión. Es una PWA, está en 4 idiomas (español, inglés, francés y chino) y tiene modo oscuro.
No hay backend que atacar, ni cuentas, ni una sola petición de red con datos sensibles. Es una SPA estática: todo el cifrado ocurre en el dispositivo del usuario.
Todas las operaciones usan la Web Crypto API nativa, sin librerías criptográficas de terceros. La mantienen y auditan los fabricantes de navegadores, usa aceleración por hardware y no añade ni un byte ni un riesgo de cadena de suministro.
Los archivos se cifran en trozos de 64 MB con un formato propio con cabecera mágica, y se escriben directamente a disco con la File System Access API. El trabajo pesado va en Web Workers que, si no pueden arrancar, vuelven al hilo principal.
La lógica son funciones puras en TypeScript, testeables sin montar componentes. Los composables orquestan el estado y los componentes solo pintan: un componente nunca importa la lógica directamente. Cada decisión importante está documentada en un ADR.
cipher-shred es una herramienta opcional en Rust que hace lo que el navegador no puede: escribir saltándose la caché del sistema y borrar la entrada del archivo. Incluye un motor que lee el sistema de archivos NTFS directamente para recuperar archivos borrados por error. Todavía no está publicado.
- Compartir un secreto sin servidor que lo guarde. El mensaje cifrado viaja en el fragmento
# de la URL, que los navegadores nunca envían al servidor por especificación. - Archivos cifrados que salían vacíos. Al cifrar un único archivo con el worker, el flujo de escritura nunca se cerraba y el resultado quedaba en 0 bytes. Ahora se cierra siempre, y hay un test que lo comprueba.
- Workers que se colgaban sin avisar. Si un worker fallaba al arrancar, nadie se enteraba: la operación se quedaba esperando para siempre y nunca se usaba el respaldo. Ahora los errores del worker llegan al mismo manejador que el resto, en los cuatro workers.
- Leer un disco NTFS sin confiar en lo que contiene. El parser de
cipher-shred comprueba todos los límites antes de leer, valida cada sector antes de modificar nada y nunca escribe en el volumen que analiza.