P-01
cryptoKit
Aplicación de escritorio en Java para cifrar, descifrar, resumir y firmar con 44 algoritmos, de César y Enigma al ML-KEM poscuántico, y una web que enseña la historia y las matemáticas de la criptografía.
Mi proyecto más antiguo (2017), reescrito en su versión 2.0 (2026). La aplicación Java Swing, con tema claro y oscuro y en inglés y español, reúne cifrados clásicos, codificaciones, hashes, HMAC, hash de contraseñas (Argon2id, scrypt, bcrypt), cifrado simétrico autenticado (AES-GCM, ChaCha20-Poly1305), clave pública (RSA, X25519) y los algoritmos poscuánticos ML-KEM y ML-DSA; el mismo jar es también una herramienta de línea de comandos. La acompaña un portal con diez capítulos de historia y matemáticas, de César a los retículos, con teoremas y figuras interactivas que ejecutan los algoritmos reales en el navegador.
Decisiones clave
- Cada algoritmo lleva una etiqueta de seguridad (recomendado, heredado, roto…) y un enlace «Cómo funciona» a su capítulo del portal.
- Valores seguros por defecto: IV y nonces aleatorios, modos autenticados que rechazan datos manipulados y comparaciones en tiempo constante.
- 89 pruebas con vectores oficiales (NIST, RFC) y con textos cifrados por la versión 1.0, que siguen descifrándose.
- Publicación con GitHub Actions: el jar y paquetes portables para Windows, macOS y Linux con su propio Java; el portal, en GitHub Pages.
- Java 21
- Swing
- FlatLaf
- Bouncy Castle
- Maven
- JavaScript
- Python
- GitHub Actions
- Java 100%