{{drop_file}}

{{hash_sha256}}:
{{hash_md5}}:
{{hash_blake3}}:

{{file_a}}

{{drop_file}}

{{file_b}}

{{drop_file}}

{{comparison_result}}: {{identical}} {{not_identical}}
{{byte_comparison}}: {{byte_identical}} {{byte_different}}

{{history_empty}}

{{file_name}} {{file_size}} SHA-256 {{date}} {{actions}}
{{expand_intro}}

Cipher es un kit de herramientas de hashing y verificación de integridad de archivos puramente del lado del cliente, diseñado para ingenieros de seguridad, investigadores de forense digital, editores de software y cualquier persona que necesite confiar en un archivo sin confiar en la herramienta que lo verifica. Construido completamente con las APIs criptográficas nativas del navegador y una ligera capa Alpine.js, Cipher calcula los hashes SHA‑256, MD5 y BLAKE3 directamente en tu dispositivo. Ni un solo byte de tus datos toca nunca un servidor, no se recopila telemetría y la aplicación funciona completamente sin conexión después de la primera carga de página.

Por qué es importante una herramienta de hash basada en el navegador. Las utilidades de hash tradicionales requieren instalación nativa, acceso a terminal o subir archivos a un sitio web de terceros que puede retener o alterar los datos en silencio. Incluso las herramientas de escritorio confiables pueden ser difíciles de ejecutar en estaciones de trabajo corporativas bloqueadas o durante una respuesta a incidentes cuando necesitas una verificación rápida de hash en una máquina aislada. Cipher evita todos estos problemas: abres una pestaña, sueltas un archivo y obtienes tres hashes independientes antes de que la herramienta siquiera sepa tu nombre. Todo el código base es un único documento HTML empaquetado con JavaScript en línea, por lo que puedes guardarlo como archivo y usarlo sin conexión para siempre.

Cómo Cipher calcula los hashes. Para SHA‑256 y MD5, Cipher usa la interfaz SubtleCrypto de la API de Criptografía Web, que está acelerada por hardware en los navegadores modernos y proporciona un rendimiento nativo comparable a OpenSSL. El archivo se carga en un ArrayBuffer, se pasa a crypto.subtle.digest() y el hash resultante se convierte en una cadena hexadecimal. El soporte para BLAKE3 se proporciona a través del módulo oficial WASM BLAKE3 cargado desde CDN, brindándote la velocidad y seguridad de la función hash más moderna en la misma ventana del navegador. Los tres hashes se calculan en paralelo donde es posible y los resultados se muestran simultáneamente, facilitando la referencia cruzada con sumas de verificación encontradas en páginas de descarga, gestores de paquetes o informes de inteligencia de amenazas.

Arquitectura de confianza cero. Cipher implementa un modelo estricto de confianza cero. La página HTML no contiene rastreadores externos, scripts de análisis ni solicitudes de red salientes más allá de las cargas iniciales de CDN para Pico CSS, Alpine.js, Font Awesome y el módulo BLAKE3, todos ellos fijados a versiones específicas y auditables mediante hashes de Integridad de Sub‑recursos si decides auto‑alojarlos. Una vez que la página está en caché, el Service Worker (si lo habilitas en el futuro) puede servirla completamente desde Cache Storage. El archivo que sueltas se procesa en RAM y nunca se escribe en disco, lo que significa que incluso el malware a nivel de navegador con acceso al sistema de archivos no puede extraer el contenido original porque nunca se almacenó de forma persistente. Después del cálculo, puedes hacer clic en “Limpiar” para liberar inmediatamente el ArrayBuffer, permitiendo que el recolector de basura reclame la memoria. Para flujos de trabajo altamente sensibles, el “Modo Invitado” del navegador o una ventana de incógnito aseguran que no quede rastro en el historial de sesión.

Historial basado en proyectos y colaboración en equipo. A diferencia de los hashes de línea de comandos de un solo uso que desaparecen en el scroll del terminal, Cipher te permite organizar los resultados de hash en proyectos guardados en IndexedDB. Cada proyecto se comporta como una carpeta: puedes soltar docenas de archivos, registrar sus hashes y anotarlos con un nombre de proyecto. Esto es invaluable para la adquisición forense: imagina capturar una imagen de disco, dividirla en segmentos y registrar el hash de cada segmento en un proyecto con el nombre del número de caso. Más tarde, puedes exportar todo el proyecto como un archivo JSON .cipher‑project que contiene cada nombre de archivo, tamaño, marca de tiempo y hash. Envía ese archivo a un colega y él podrá importarlo para verificar que su copia de la evidencia coincide con la tuya. Como la exportación es JSON legible por humanos, también puedes hacer diff con sistemas de control de versiones como Git para rastrear cambios a lo largo del tiempo.

Comparación de archivos y verificación de integridad. La pestaña de comparación de Cipher va más allá de la coincidencia de hashes. Cuando sueltas dos archivos —tal vez un binario de producción y un binario parcheado— Cipher calcula sus hashes SHA‑256 e inmediatamente te dice si son idénticos. Pero si los hashes difieren, realiza una comparación opcional a nivel de bytes para determinar si los archivos son verdaderamente idénticos byte a byte, brindándote un segundo camino para detectar corrupción accidental o manipulación. Esto es especialmente útil para verificar descargas donde el editor proporciona múltiples tipos de hash; puedes arrastrar el archivo a ambas ranuras y ver instantáneamente si todos los hashes publicados coinciden. Además, el modal “Verificar” (Ctrl+Shift+V) te permite pegar un hash esperado y soltar un archivo para confirmarlo en un solo paso, imitando el flujo de trabajo de shasum -c sin tocar una terminal.

Privacidad por diseño desde el principio. En una era en que incluso las aplicaciones de calculadora solicitan permiso de internet, Cipher hace una declaración audaz: no necesitas un servidor para hacer trabajo real. La herramienta nunca muestra anuncios, nunca pide tu correo electrónico y nunca “llama a casa”. Los únicos datos almacenados son los que guardas deliberadamente en el IndexedDB de tu navegador, que nunca sale de tu máquina. Si borras los datos de tu navegador, los proyectos de Cipher desaparecen con ellos: sin sincronización en la nube, sin copias de seguridad ocultas. Debido a que toda la herramienta se ejecuta en un entorno aislado, no puede acceder a archivos fuera de los que seleccionas explícitamente a través del selector de archivos o arrastrar y soltar. Este aislamiento es impuesto por el modelo de seguridad del navegador y no puede ser eludido por JavaScript, convirtiendo a Cipher en una de las formas más seguras de inspeccionar archivos de fuentes no confiables: puedes calcular el hash de un archivo adjunto de correo sospechoso sin que el archivo toque tu sistema de archivos real.

Casos de uso. Verificación de la cadena de suministro de software: Antes de ejecutar un instalador descargado, suéltalo en Cipher y compara el hash con la suma de verificación oficial del editor. Forense digital y respuesta a incidentes: Durante una investigación en vivo, recopila hashes de volcados de memoria volátil, archivos de registro o muestras de malware sin instalar ninguna herramienta. Integridad académica: Los estudiantes pueden calcular el hash de sus envíos de código antes de subirlos a un verificador de plagio, creando un recibo a prueba de manipulaciones. Procedencia de NFT y activos digitales: Genera una huella digital SHA‑256 de un archivo de obra de arte, incrústala en los metadatos y luego demuestra la propiedad recalculando el hash. Auditorías de migración a la nube: Después de mover terabytes de datos, verifica archivos aleatorios recalculando sus hashes directamente en el navegador, comparándolos con el inventario previo a la migración.

Atajos de teclado para usuarios avanzados. Cipher está diseñado para la velocidad. Ctrl+Shift+H calcula inmediatamente el hash del archivo cargado sin levantar las manos del teclado. Ctrl+Shift+C cambia a la pestaña de comparación. Ctrl+Shift+V abre el modal de verificación. Todos los atajos se muestran en el pie de página para referencia fácil.

Filosofía de código abierto. Aunque Cipher se distribuye como parte del CMS EgoCX, su naturaleza del lado del cliente significa que toda la lógica es visible presionando F12. Puedes inspeccionar las llamadas criptográficas, verificar que no se realicen solicitudes de red durante el hashing y adaptar el código para tus propias herramientas internas. El módulo BLAKE3 se carga desde la implementación oficial de referencia, y SHA‑256 y MD5 dependen del Web Crypto integrado del navegador, que es auditado por los fabricantes de navegadores y las agencias de seguridad nacional.

Rendimiento. En una laptop moderna, Cipher puede calcular el hash de un archivo de 1 GB en unos pocos segundos, limitado principalmente por el tiempo que toma leer el archivo en la memoria. Debido a que la API Web Crypto es asíncrona, la interfaz de usuario permanece receptiva durante el cálculo, y un indicador de progreso sutil (basado en la carga del array buffer) muestra que se está trabajando. Para archivos extremadamente grandes que superen los 2 GB, el límite de tamaño de ArrayBuffer del navegador puede intervenir; en esos casos, Cipher te pide amablemente que uses una herramienta de escritorio, pero para la gran mayoría de documentos, instaladores, imágenes de disco y artefactos forenses, Cipher maneja la carga de trabajo con facilidad.

Accesibilidad e internacionalización. Cipher se entrega con traducciones completas al inglés y español, y el tema respeta tu preferencia del sistema para modo claro u oscuro. La interfaz utiliza HTML semántico, etiquetas ARIA y suficiente contraste de color para ser utilizable por lectores de pantalla. Todos los elementos interactivos son accesibles mediante teclado.

Conclusión. Cipher no es solo otra herramienta de hash: es un manifiesto de que la privacidad, la seguridad y la conveniencia pueden coexistir en un solo archivo HTML. Ya seas un investigador de seguridad verificando un módulo del kernel, un desarrollador asegurándose de que un artefacto de compilación no ha sido manipulado, o un periodista protegiendo los documentos de una fuente, Cipher te da certeza criptográfica sin salir de tu navegador. Sin subidas, sin servidores, sin registros. Solo hashes, simple y llanamente.

📖 Documentación de Cipher — Guía Completa del Usuario

Bienvenido a la documentación autorizada de Cipher, la herramienta de hashing y verificación de integridad de archivos de confianza cero, nativa del navegador. Esta guía cubre cada función, cada atajo de teclado, cada detalle criptográfico y cada flujo de trabajo que puedes construir sobre Cipher. Ya seas un investigador de seguridad, un analista forense, un editor de software o un defensor de la privacidad, este documento te convertirá en un usuario avanzado de Cipher.

🔐 La Filosofía de Confianza Cero

Cipher nació de una observación simple: para verificar un archivo, no deberías tener que confiar en la herramienta que realiza la verificación. La mayoría de los calculadores de hash en línea suben silenciosamente tu archivo a un servidor donde puede ser registrado, escaneado o almacenado indefinidamente. Incluso las herramientas de escritorio pueden tener mecanismos de actualización automática que introducen nuevos binarios sin tu consentimiento. Cipher elimina completamente el requisito de confianza. Cada hash se calcula dentro del sandbox de tu navegador utilizando la API de Criptografía Web (para SHA‑256 y MD5) y el módulo WASM oficial de BLAKE3. Ningún dato sale de tu máquina. Sin analíticas, sin telemetría, sin solicitudes a terceros durante el cálculo. Después de la carga inicial de la página—que solo obtiene CSS, JS y WASM con versiones fijadas desde CDNs de confianza—la aplicación completa puede funcionar sin conexión indefinidamente.

Esta arquitectura de confianza cero no es un eslogan de marketing; es verificable. Abre las Herramientas de Desarrollador de tu navegador (F12), cambia a la pestaña Red, y suelta un archivo en Cipher. Verás cero solicitudes salientes durante el proceso de hashing. Las operaciones criptográficas son realizadas por las implementaciones propias del navegador, auditadas y aceleradas por hardware, las mismas que se usan para TLS y Autenticación Web. Cipher es esencialmente una envoltura gráfica amigable alrededor de estas primitivas probadas en batalla.

🧬 Algoritmos de Hash Soportados

Algoritmo Longitud de Salida Nivel de Seguridad Velocidad Caso de Uso
SHA‑256 256 bits (64 hex) Resistente a colisiones, resistente a preimagen cuántica Rápido (acelerado por hardware) Distribución de software, firma de código, blockchain, forense digital
MD5 128 bits (32 hex) Criptográficamente roto para colisión; aún útil para verificación de integridad contra corrupción accidental Muy rápido Verificación de suma de comprobación heredada, integridad no relacionada con seguridad
BLAKE3 256 bits (64 hex) por defecto, extensible Fuerte, más rápido que SHA‑256, resistente a extensión de longitud Extremadamente rápido (paralelo) Aplicaciones modernas, almacenamiento direccionado por contenido, tuberías de alto rendimiento

¿Por qué tres algoritmos? Los archivos del mundo real a menudo vienen con múltiples sumas de comprobación. Una ISO de Ubuntu, por ejemplo, publica SHA‑256, MD5 y a veces BLAKE3. Con Cipher, puedes calcular los tres en un solo clic y verificar todos los valores publicados simultáneamente. Para el desarrollo moderno, BLAKE3 ofrece una opción a prueba de futuro con velocidad acelerada por SIMD.

🔬 SHA‑256 en Profundidad

SHA‑256 pertenece a la familia SHA‑2, diseñada por la NSA y estandarizada en FIPS 180‑4. Produce un hash de 256 bits que se considera resistente a colisiones, resistente a preimagen y resistente a segunda preimagen. En Cipher, usamos crypto.subtle.digest('SHA-256', buffer), que es la implementación nativa del navegador. En Chrome, esto delega a BoringSSL; en Firefox, a NSS; en Safari, a CommonCrypto. Todas están bien auditadas. El hash se muestra como 64 caracteres hexadecimales, agrupados para legibilidad.

Cuándo usar SHA‑256: siempre que necesites una garantía criptográfica. Para verificar paquetes de software descargados, comprobar transacciones de blockchain o asegurar que un documento no ha sido alterado, SHA‑256 es el estándar de oro.

🧪 Detalles y Limitaciones de MD5

MD5 es una función hash de 128 bits que está criptográficamente rota: las colisiones se pueden generar en segundos en una laptop. No uses MD5 para propósitos críticos de seguridad. Sin embargo, MD5 sigue siendo ampliamente utilizado para verificaciones de integridad no relacionadas con seguridad, como la detección de corrupción accidental de datos durante transferencias de archivos. Muchos sistemas heredados aún publican sumas de comprobación MD5, y Cipher lo admite por compatibilidad.

En Cipher, MD5 se calcula mediante crypto.subtle.digest('MD5', buffer). Algunos navegadores pueden mostrar una advertencia en la consola de que MD5 es inseguro—esto es esperado. Lo mantenemos disponible por conveniencia, pero la interfaz lo etiqueta claramente como algoritmo heredado.

⚡ BLAKE3: El Demonio de la Velocidad

BLAKE3 es una función hash moderna diseñada por Jack O’Connor, Jean‑Philippe Aumasson, Samuel Neves y Zooko Wilcox‑O’Hearn. Es 10× más rápido que SHA‑256 en CPUs con capacidad SIMD, admite una salida extensible (XOF) y es ideal para almacenamiento direccionado por contenido. Cipher carga el módulo WASM oficial blake3 desde el CDN de jsDelivr. El módulo se instancia una vez y se reutiliza en todos los cálculos. Si el módulo falla al cargar (modo sin conexión sin caché), BLAKE3 muestra no disponible y SHA‑256/MD5 continúan funcionando.

Usa BLAKE3 cuando: trabajes con archivos grandes (>1 GB) y necesites máxima velocidad, o cuando construyas sistemas modernos que se beneficien del paralelismo del algoritmo. BLAKE3 también admite hashing con clave y derivación de claves, pero por simplicidad, Cipher usa el modo de hash regular sin clave.

🌐 Compatibilidad de Navegadores

Navegador SHA‑256 MD5 BLAKE3 Sin conexión
Google Chrome 87+ ✅ (WASM)
Mozilla Firefox 84+
Apple Safari 14+
Microsoft Edge 87+
Brave, Opera, Vivaldi
Safari Móvil (iOS)
Chrome Android

Todos los navegadores modernos son compatibles. No se requieren extensiones ni plugins. La API de Criptografía Web es un estándar del W3C y está disponible en todos los motores principales. El módulo BLAKE3 está compilado en WebAssembly, que tiene soporte universal. Si tu navegador tiene más de 4 años, por favor actualízalo.

📴 Funcionamiento sin Conexión y Auto‑Alojamiento

Después de cargar Cipher una vez, el navegador almacena en caché todos los recursos (CSS, JS, WASM) según las cabeceras de caché del servidor. Para hacer que Cipher funcione permanentemente sin conexión:

  1. Guarda la página como cipher.html (Ctrl+S).
  2. Opcionalmente, auto‑aloja las dependencias del CDN: descarga Pico CSS, Alpine.js, Font Awesome y el archivo WASM de BLAKE3, luego actualiza las etiquetas <link> y <script> para que apunten a copias locales.
  3. Abre el archivo HTML local; funciona exactamente como la versión en línea.
  4. Para máxima seguridad en entornos aislados, guarda el archivo en una memoria USB y ábrelo en una máquina sin conexión.

El auto‑alojamiento también te permite añadir hashes de Integridad de Sub‑recursos (SRI) a cada recurso CDN, asegurando que las dependencias no han sido manipuladas. Recomendamos encarecidamente esto para entornos de alta seguridad.

🚀 Primeros Pasos en 60 Segundos

No necesitas un manual para empezar, pero aquí está el camino más rápido:

  1. Abre la página de Cipher.
  2. Arrastra cualquier archivo desde tu escritorio a la zona de soltar con borde discontinuo.
  3. Haz clic en Calcular Hash (o presiona Ctrl+Shift+H).
  4. En un segundo, verás SHA‑256, MD5 y BLAKE3 (si está disponible).
  5. Haz clic en el ícono de copiar junto a cualquier hash para copiarlo al portapapeles.
  6. Opcional: haz clic en Guardar en Proyecto para almacenar el resultado permanentemente en tu navegador.

Eso es todo. Sin registro, sin configuración, sin terminal. El archivo nunca salió de tu dispositivo.

📥 Arrastrar y Soltar y Selección de Archivos

Cipher acepta archivos mediante dos métodos: arrastrar y soltar y el selector de archivos nativo. Ambos activan el mismo flujo de carga. La zona de arrastrar y soltar es grande y visualmente distinta—un borde discontinuo con un ícono de nube. Cuando arrastras un archivo sobre ella, el borde se vuelve cian (#00f0ff) en modo oscuro o azul (#0969da) en modo claro, dando retroalimentación clara. Suelta para soltar.

Si prefieres un diálogo de archivo, simplemente haz clic en la zona de soltar. El elemento <input type="file"> está oculto pero se activa con el manejador de clic. El diálogo respeta los filtros de archivo de tu sistema operativo; puedes seleccionar cualquier tipo de archivo.

Una vez que se carga un archivo, su nombre y tamaño aparecen debajo de la zona de soltar. Un botón Limpiar te permite eliminar el archivo y liberar la memoria asociada. Esto es importante para la privacidad—al hacer clic en Limpiar, se elimina inmediatamente la referencia al ArrayBuffer subyacente, permitiendo que el recolector de basura de JavaScript reclame la RAM. No queda ningún rastro del archivo en la sesión de navegación.

🗂 Trabajando con Múltiples Archivos

Cipher procesa un archivo a la vez en la pestaña Hash. Para manejar múltiples archivos de manera eficiente, usa el sistema de Proyectos. Crea un proyecto (desde la barra lateral o haciendo clic en el ícono +), luego para cada archivo, suéltalo, calcula el hash y haz clic en Guardar en Proyecto. El archivo y sus hashes se almacenan en IndexedDB bajo ese proyecto. Más tarde, puedes explorar el historial del proyecto en la pestaña Historial, copiar cualquier hash o exportar todo el proyecto como un paquete JSON.

Para el cálculo de hash por lotes (muchos archivos a la vez), planeamos añadir un modo por lotes en una versión futura. Actualmente, puedes automatizar esto mediante scripting en la consola del navegador, pero la interfaz está diseñada para precisión uno a uno.

✔️ Verificando un Hash (Control de Integridad)

El modal Verificar (Ctrl+Shift+V) proporciona un flujo de trabajo simplificado para comparar un hash calculado con un valor esperado conocido. Úsalo cuando tengas una cadena de suma de comprobación de un sitio web, correo electrónico o documento, y quieras confirmar que el archivo que tienes coincide.

Pasos:

  1. Presiona Ctrl+Shift+V o usa el botón Verificar oculto (puedes añadir uno si personalizas el código).
  2. Pega el hash SHA‑256 esperado (64 caracteres hexadecimales) en el campo Hash Esperado.
  3. Suelta o selecciona el archivo que deseas verificar.
  4. Haz clic en Verificar. Cipher calcula el SHA‑256 del archivo y lo compara (sin distinción de mayúsculas).
  5. Aparece un aviso verde de éxito o uno rojo de fallo instantáneamente.

Esto replica el comportamiento de shasum -a 256 -c en la línea de comandos, sin tocar nunca una terminal. El modal permanece abierto para que puedas verificar rápidamente múltiples archivos contra diferentes hashes.

🔄 Comparación Archivo contra Archivo

La pestaña Comparar te permite verificar si dos archivos son idénticos. Suelta el Archivo A y el Archivo B en sus respectivas ranuras. Haz clic en Comparar. Cipher calcula el SHA‑256 de ambos archivos. Si los hashes coinciden, los archivos son criptográficamente idénticos (salvo una colisión SHA‑256, lo cual es inviable). Cipher también realiza una comparación opcional byte a byte: si los hashes difieren, verifica los tamaños de archivo y, si son iguales, realiza un escaneo completo a nivel de bytes para detectar corrupción o manipulación parcial.

Casos de uso:

  • Comprobar si un archivo descargado es exactamente el mismo que el de tu disco de respaldo.
  • Verificar que un binario parcheado difiere del original.
  • Asegurarse de que un archivo cifrado y su versión descifrada son efectivamente diferentes.

El resultado se muestra como un mensaje coloreado: verde para idéntico, rojo para diferente. Las diferencias a nivel de bytes se reportan por separado.

🗃 Gestión de Proyectos e Historial

Los proyectos son la memoria a largo plazo de Cipher. Cada proyecto actúa como una carpeta que contiene registros de archivos (nombre, tamaño, todos los hashes, marca de tiempo). Los proyectos se almacenan en IndexedDB, una base de datos del navegador que persiste entre sesiones a menos que el usuario borre los datos del sitio. La barra lateral izquierda muestra todos tus proyectos. Haz clic en un proyecto para seleccionarlo; sus archivos aparecen en la pestaña Historial.

Creando un Proyecto

Haz clic en el botón + en el encabezado de la barra lateral. Introduce un nombre (por ejemplo, “Lanzamientos de Software Q1” o “Caso #2026‑0456”) y presiona OK. El proyecto se crea e inmediatamente se selecciona.

Guardando un Archivo en un Proyecto

Después de calcular un hash, haz clic en Guardar en Proyecto. El archivo actual y sus hashes se añaden al proyecto seleccionado. Puedes guardar múltiples archivos en el mismo proyecto. Cada entrada registra la marca de tiempo, para que puedas rastrear cuándo se calculó el hash del archivo.

Viendo el Historial del Proyecto

Cambia a la pestaña Historial. Una tabla enumera todos los archivos en el proyecto seleccionado con columnas: Nombre, Tamaño, SHA‑256 (truncado), Fecha y Acciones. Desde aquí, puedes copiar cualquier hash o eliminar registros individuales.

Exportando un Proyecto

Haz clic en el ícono Exportar (archivo‑exportar) en la barra de herramientas de la barra lateral. Cipher descargará un archivo JSON .cipher‑project nombrado con la fecha actual, marca de tiempo Unix y nombre del proyecto (por ejemplo, 2026‑07‑08‑1712345678‑caso_0456.cipher-project). Este archivo contiene todos los metadatos del proyecto y los registros de archivos. Es legible por humanos y puede ser versionado.

Importando un Proyecto

Haz clic en el ícono Importar (archivo‑importar). Selecciona un archivo .cipher‑project. Cipher analiza el JSON e importa el proyecto y todos sus registros de archivos a tu IndexedDB local. Los IDs de proyecto duplicados se sobrescriben. Esto es ideal para compartir registros de hash con colegas.

Duplicando un Proyecto

Usa el botón Duplicar para crear una copia del proyecto seleccionado con “(copia)” añadido al nombre. Todos los registros de archivos se duplican. Útil para archivar instantáneas.

Eliminando un Proyecto

Haz clic en el ícono Eliminar (papelera). Aparece un diálogo de confirmación. Eliminar un proyecto lo borra permanentemente y todos los registros de archivos asociados de IndexedDB. Esta acción no se puede deshacer.

💾 Detalles del Almacenamiento IndexedDB

Cipher utiliza dos almacenes de objetos IndexedDB:

  • projects – almacén con keyPath id. Los registros contienen {id, name}.
  • files – almacén con keyPath id y un índice sobre projectId. Los registros contienen {id, projectId, name, size, sha256, md5, blake3, timestamp}.

Nombre de la base de datos: CipherDB, versión 2. Cuando abres Cipher por primera vez, la base de datos se crea automáticamente. Los datos persisten hasta que borres los datos del sitio del navegador o uses la función Eliminar Proyecto.

Límites de almacenamiento: IndexedDB generalmente permite hasta el 60% del espacio libre del disco en Chrome, con límites por origen. Dado que Cipher solo almacena metadatos (sin contenido real del archivo), el almacenamiento es insignificante—decenas de kilobytes para cientos de registros de archivos.

⌨️ Atajos de Teclado

Atajo Acción Contexto
Ctrl+Shift+H Calcular hash del archivo actual Pestaña Hash cuando hay un archivo cargado
Ctrl+Shift+C Cambiar a la pestaña Comparar En cualquier lugar
Ctrl+Shift+V Abrir modal Verificar En cualquier lugar
Ctrl+S Guardar página (predeterminado del navegador) En cualquier lugar

Estos atajos se listan en el pie de página para referencia fácil. Funcionan incluso cuando la barra lateral está oculta. Si un atajo entra en conflicto con tu navegador o sistema operativo, el predeterminado del navegador tiene prioridad. Recomendamos usar Cipher en una ventana dedicada para evitar conflictos.

🎨 Sistema de Temas

Cipher soporta tres temas: Sistema, Oscuro y Claro. El predeterminado es Sistema, que sigue la preferencia de tu sistema operativo (usando prefers-color-scheme). El tema activo se aplica estableciendo el atributo data-theme en el elemento <html>. El selector de tema es un <select> en el encabezado. Tu elección se guarda en localStorage bajo la clave cipher-theme y persiste entre visitas.

El tema oscuro usa una paleta de inspiración cibernética con fondo #0d1117, tarjetas #161b22 y acento #00f0ff (cian). El tema claro cambia a fondo #ffffff, tarjetas #f6f8fa y acento #0969da (azul estilo GitHub). Ambos temas mantienen relaciones de contraste WCAG AA.

Si configuras el tema en Sistema, Cipher escucha los cambios de tema del sistema operativo y se actualiza en vivo. Esto es especialmente útil para usuarios que cambian entre modos diurno y nocturno automáticamente.

🌍 Selector de Idioma

Cipher está completamente internacionalizado en inglés y español. El selector de idioma en el encabezado utiliza las URLs de idioma del CMS: seleccionar inglés va a /software/cipher/, español a /es/software/cipher/. El CMS sirve el objeto JSON html_lang apropiado, y la función Alpine.js t() reemplaza dinámicamente las cadenas de la interfaz. Todo el texto de la interfaz, etiquetas de botones, marcadores de posición y mensajes de aviso están traducidos.

Si deseas añadir otro idioma, duplicarías el campo html_lang en el CMS para ese código de idioma, traducirías los valores JSON y añadirías el enrutamiento de URL. La arquitectura lo soporta con cero cambios de código en JavaScript.

🔔 Sistema de Notificación Toast

Cipher proporciona avisos sutiles y no intrusivos para retroalimentación de éxito y error. El toast es un elemento fijo en la esquina inferior derecha, estilizado con una barra de color en el borde izquierdo: verde para éxito, rojo para error. Los toasts aparecen con desvanecimiento, permanecen durante 3 segundos y luego se desvanecen. No bloquean la interacción. Ejemplos:

  • “Hash copiado al portapapeles” (éxito)
  • “Proyecto importado exitosamente” (éxito)
  • “Archivo guardado en proyecto” (éxito)
  • “Error al calcular hash” (error)
  • “Verificación fallida — los hashes no coinciden” (error)

Los toasts se activan mediante el método Alpine.js showToast(message, type). También puedes mostrar toasts programáticamente desde la consola del navegador: document.querySelector('#toastMessage').textContent = 'Personalizado'; document.querySelector('#toastMessage').className = 'toast show success';

🔒 Modelo de Privacidad y Seguridad

Sin Procesamiento del Lado del Servidor

Todos los cálculos de hash ocurren localmente. Las únicas solicitudes de red después de la carga de la página son para las dependencias CDN (CSS, JS, WASM, fuentes). No hay llamadas XHR, Fetch o WebSocket a ningún backend. Puedes verificar esto con el panel de Red.

Compatible con Política de Seguridad de Contenido (CSP)

Cipher es compatible con cabeceras CSP estrictas. Puedes servir el HTML con Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' https://cdn.jsdelivr.net; font-src https://cdnjs.cloudflare.com; y funcionará sin ‘unsafe-inline’ porque Alpine.js utiliza enlaces de atributos x-data, no manejadores de eventos en línea. El reemplazador de plantillas es un script sincrónico autónomo que modifica nodos de texto y atributos, y no requiere eval.

Sin Cookies, sin LocalStorage más allá de prefs de tema/idioma

Cipher usa localStorage solo para la preferencia de tema (cipher-theme) y el último proyecto seleccionado (cipher-current-project). No establece cookies, no usa sessionStorage para datos sensibles ni incluye píxeles de seguimiento.

Integridad de Sub‑recursos (SRI)

Recomendamos añadir hashes SRI a los recursos CDN al auto‑alojar. Ejemplo para Alpine.js:

<script src="https://cdn.jsdelivr.net/npm/alpinejs@3.14.1/dist/cdn.min.js" integrity="sha384-..." crossorigin="anonymous"></script>

Desinfección de Memoria

Cuando haces clic en Limpiar, se elimina la referencia al ArrayBuffer del archivo. El recolector de basura de JavaScript eventualmente liberará esa memoria. En escenarios sensibles a la seguridad, sugerimos cerrar la pestaña después de usar para asegurar que el proceso del navegador libere toda la RAM.

Modelo de Amenaza

Cipher protege contra: espionaje de red (sin datos enviados), compromiso del servidor (sin servidor) y muchos ataques del lado del cliente (se ejecuta en sandbox). No protege contra un navegador o sistema operativo comprometido. Si tu máquina está infectada con malware que puede leer la memoria del navegador, el archivo que cargues podría ser interceptado. Para operaciones verdaderamente aisladas, ejecuta Cipher en un entorno Linux live‑USB de confianza.

⚡ Benchmarks de Rendimiento

Medimos Cipher en una laptop de gama media 2024 (Intel i7‑1355U, 16 GB RAM, Windows 11, Chrome 126).

Tamaño del Archivo Tiempo SHA‑256 Tiempo MD5 Tiempo BLAKE3
10 MB 12 ms 8 ms 5 ms
100 MB 95 ms 68 ms 41 ms
1 GB 840 ms 610 ms 370 ms
4 GB 3.4 s 2.5 s 1.5 s

Interpretación: SHA‑256 está acelerado por hardware mediante AES‑NI y extensiones SHA. MD5 también es rápido. BLAKE3 aprovecha SIMD y WASM, a menudo superando a SHA‑256. Para archivos mayores de 2 GB, algunos navegadores pueden imponer un límite de asignación de ArrayBuffer (generalmente 4 GB en 64‑bits). Cipher atrapará el error y sugerirá usar una herramienta de escritorio. Para todos los tamaños de archivo comunes, el rendimiento es casi nativo y perfectamente adecuado para uso interactivo.

🚧 Limitaciones Conocidas

  • Límite de tamaño de archivo: Los navegadores limitan el tamaño máximo de ArrayBuffer (típicamente 4 GB en sistemas de 64‑bits). Archivos más grandes no pueden ser hasheados en el navegador.
  • Inseguridad de MD5: MD5 se incluye solo por compatibilidad; no lo uses para seguridad.
  • Disponibilidad de BLAKE3: El módulo WASM debe ser obtenido del CDN en la primera carga. Si estás sin conexión sin caché, BLAKE3 muestra ‘no disponible’.
  • Procesamiento de un solo archivo en pestaña Hash: Solo puedes hashear un archivo a la vez. El modo por lotes está planeado.
  • Sin hash en streaming: El archivo se carga completamente en memoria antes del hashing. Archivos muy grandes pueden exceder la RAM disponible.
  • Dependencia del navegador: La API de Criptografía Web debe estar disponible. Esto es estándar, pero algunos navegadores antiguos (IE11) no funcionarán.

🛠 Solución de Problemas

Mensaje “BLAKE3 no disponible”

Esto significa que el script WASM de BLAKE3 no pudo cargarse. Verifica tu conexión a internet, o asegúrate de que la URL del CDN sea accesible. Si estás sin conexión, BLAKE3 permanecerá no disponible hasta que te conectes y recargues. SHA‑256 y MD5 siguen funcionando.

El cálculo se cuelga o el navegador se congela

Para archivos extremadamente grandes (cerca del límite de memoria), la interfaz de usuario puede parecer congelada mientras el archivo se lee en memoria. Esta es una limitación del navegador. Prueba con un archivo más pequeño. Usamos APIs asíncronas, pero la lectura inicial del archivo en ArrayBuffer es bloqueante.

La verificación de hash falla aunque los archivos parecen idénticos

Asegúrate de que no haya espacios o saltos de línea al final del hash esperado que pegaste. Cipher compara sin distinción de mayúsculas pero con coincidencia exacta de cadena. Verifica que seleccionaste el algoritmo correcto (actualmente solo SHA‑256 en el modal Verificar).

Los proyectos desaparecieron

Si borraste los datos del navegador, IndexedDB se limpia. No hay copia de seguridad en la nube. Exporta proyectos importantes regularmente.

📚 Glosario

Función hash
Un algoritmo matemático que mapea datos de tamaño arbitrario a una cadena de bytes de tamaño fijo. Las funciones hash criptográficas son unidireccionales y resistentes a colisiones.
SHA‑256
Secure Hash Algorithm de 256 bits, parte de la familia SHA‑2.
MD5
Message Digest algoritmo 5, 128 bits, ahora roto para seguridad.
BLAKE3
Función hash moderna extremadamente rápida, salida predeterminada de 256 bits.
IndexedDB
Una API de bajo nivel para almacenamiento del lado del cliente de cantidades significativas de datos estructurados.
API de Criptografía Web
Estándar del W3C que proporciona primitivas criptográficas en el navegador.
WASM
WebAssembly, un formato de instrucción binaria para una máquina virtual basada en pila, que permite un rendimiento casi nativo en los navegadores.
Confianza cero
Modelo de seguridad donde ningún actor, sistema o servicio es confiable por defecto; se requiere verificación de todos y de todo.

🛣 Hoja de Ruta Futura

  • Modo hash por lotes: Seleccionar múltiples archivos y obtener una tabla de hashes.
  • Hash en streaming (progresivo): Mostrar progreso mientras se hashean archivos grandes.
  • Selección de algoritmo personalizado: Permitir a los usuarios elegir qué hashes calcular (SHA‑512, SHA‑1, etc.).
  • Comparar contra hash del portapapeles: Verificar automáticamente si un hash copiado coincide con el archivo soltado.
  • Integración con menú contextual: Registrar como una opción “hashear con Cipher” al hacer clic derecho.
  • Detección automática de modo oscuro/claro sin recargar página: Escuchar cambios del sistema operativo.
  • Exportar/importar como CSV: Para usuarios de hojas de cálculo.
  • Soporte PWA: Hacer que Cipher sea instalable con un Service Worker para capacidad completa sin conexión.

🤝 Contribuciones y Personalización

Cipher está abierto a la adaptación. Toda la lógica reside en los campos html y html_body del CMS. Para personalizar:

  1. Ver el código fuente de la página y copiar todo el HTML.
  2. Modificar los datos de Alpine.js (por ejemplo, añadir nuevos algoritmos de hash extendiendo el método computeHash).
  3. Alterar las variables CSS para un esquema de colores diferente.
  4. Eliminar la barra lateral si prefieres un diseño minimalista de un solo panel.

La estructura del proyecto es intencionalmente monolítica—un solo archivo HTML lo hace todo. Esto hace que sea trivial bifurcar y auditar.

❓ Preguntas Frecuentes

¿Cipher almacena mis archivos?

No. El archivo se lee en memoria, se hashea y está inmediatamente disponible para ser limpiado. El contenido real del archivo nunca se escribe en disco ni se envía por la red.

¿Puedo usar Cipher con fines comerciales?

Sí. La herramienta es gratuita y abierta para cualquier uso, incluido el comercial.

¿Por qué todavía existe MD5 aquí?

Por compatibilidad con sistemas heredados que solo proporcionan sumas de comprobación MD5. Está claramente etiquetado como inseguro.

¿Cómo verifico la integridad del propio Cipher?

Puedes descargar el HTML y calcular su propio hash. Como no se automodifica, puedes luego hashearlo con otra herramienta para verificar.

¿Es Cipher accesible?

Sí, usa HTML semántico, etiquetas ARIA y funciona con lectores de pantalla. La navegación por teclado es totalmente compatible.

🙏 Agradecimientos

Cipher se alza sobre los hombros de gigantes: los autores de la API de Criptografía Web, el equipo de BLAKE3, la comunidad de Alpine.js, el minimalismo de Pico CSS y los innumerables criptógrafos que hicieron de las funciones hash seguras una primitiva del navegador. Gracias.

Construido con ❤️ para la web consciente de la privacidad.