P-01
cryptoKit
A Java desktop application to encrypt, decrypt, hash and sign with 44 algorithms, from Caesar and Enigma to post-quantum ML-KEM, and a site that teaches the history and mathematics of cryptography.
My oldest project (2017), rewritten as version 2.0 (2026). The Java Swing application, with light and dark themes and in English and Spanish, brings together classical ciphers, encodings, hashes, HMAC, password hashing (Argon2id, scrypt, bcrypt), authenticated symmetric encryption (AES-GCM, ChaCha20-Poly1305), public-key cryptography (RSA, X25519) and the post-quantum algorithms ML-KEM and ML-DSA; the same jar is also a command-line tool. It comes with a portal of ten chapters on history and mathematics, from Caesar to lattices, with theorems and interactive figures that run the real algorithms in the browser.
Key decisions
- Every algorithm carries a security badge (recommended, legacy, broken…) and a “How it works” link to its chapter on the portal.
- Safe defaults: random IVs and nonces, authenticated modes that reject tampered data, and constant-time comparisons.
- 89 tests with official vectors (NIST, RFC) and with ciphertexts made by version 1.0, which still decrypt.
- Released with GitHub Actions: the jar and portable packages for Windows, macOS and Linux with their own Java; the portal on GitHub Pages.
- Java 21
- Swing
- FlatLaf
- Bouncy Castle
- Maven
- JavaScript
- Python
- GitHub Actions
- Java 100%