Aplicación de escritorio · versión 2.0.0

La app

cryptoKit es una aplicación de escritorio libre (y una herramienta de línea de comandos) para cifrar, descifrar, resumir y firmar con los 44 algoritmos de esta web, de César y Enigma a AES-GCM, Argon2id, Ed25519 y el ML-KEM poscuántico. Cada algoritmo lleva una etiqueta de seguridad y un enlace al capítulo que lo explica.

El jar necesita Java 21 o posterior (cualquier distribución: Temurin, Oracle, Microsoft, el OpenJDK de Ubuntu…). Haz doble clic en él o ejecuta java -jar cryptoKit-2.0.0.jar. La página de la versión tiene también paquetes portables para Windows, macOS y Linux que incluyen su propio Java.

cryptoKit en español con el tema claro: ML-KEM-768 seleccionado, un par de claves PEM generado y un texto cifrado en Base64.
ML-KEM-768 poscuántico, con un par de claves recién generado y el formato del resultado explicado debajo.
cryptoKit en inglés: AES-GCM con una clave aleatoria en hex y un mensaje cifrado con un nonce aleatorio antepuesto.
AES-GCM, en inglés.
cryptoKit con el tema oscuro y el simulador de Enigma I: rotores, anillos, posiciones iniciales y clavijero.
Enigma I, tema oscuro.
cryptoKit verificando una firma Ed25519: una franja verde indica que la firma es válida.
Una firma Ed25519, verificada.

Novedades de la 2.0

La versión 1.0 (2022) era una pequeña ventana Swing con quince algoritmos. La versión 2 es una reescritura que conserva su espíritu y su compatibilidad:

  • 44 algoritmos en ocho familias, cada uno con una etiqueta de seguridad (recomendado, heredado, roto, histórico, codificación), una descripción y un enlace Cómo funciona a esta web.
  • Nuevos: cifrados clásicos (César, Vigenère, Playfair, Enigma I), Base32, Base58 y Base64URL, BLAKE2b, BLAKE3 y RIPEMD-160, HMAC, hash de contraseñas (Argon2id, scrypt, bcrypt, PBKDF2), AES-CTR, ChaCha20-Poly1305, AES-GCM con contraseña y Argon2id, cifrado de clave pública (RSA-OAEP, X25519 + AES-GCM, ML-KEM-768) y firmas (Ed25519, ECDSA P-256, RSA-PSS, ML-DSA-65).
  • Una interfaz moderna: temas claro y oscuro, inglés y español, una lista con buscador, generadores de claves e IV, generación de pares de claves, entrada y salida en texto, hex o Base64, carga y guardado de ficheros, y un botón usar el resultado que devuelve un texto cifrado para descifrarlo o un resumen para verificarlo.
  • Valores por defecto más seguros: si dejas vacío el IV o el nonce, se genera uno aleatorio y se antepone; los modos autenticados rechazan los datos manipulados; las verificaciones comparan en tiempo constante; los errores se explican en lugar de imprimirse como resultado.
  • Una herramienta de línea de comandos en el mismo jar, para scripts.
  • Probada: 89 pruebas automáticas con vectores oficiales (NIST, RFC) y con textos cifrados producidos por el jar real de la 1.0.

Los 44 algoritmos

FamiliaAlgoritmos
Cifrados clásicosCésar Vigenère Playfair Enigma I
CodificacionesHexadecimal Base32 Base58 Base64 Base64URL
Funciones hashSHA-256 SHA-512 SHA3-256 SHA3-512 BLAKE2b-512 BLAKE3 RIPEMD-160 SHA-1 MD5
Autenticación de mensajesHMAC-SHA256 HMAC-SHA512 HMAC-SHA3-256
Hash de contraseñasArgon2id scrypt bcrypt PBKDF2-HMAC-SHA256
Cifrado simétricoAES-GCM ChaCha20-Poly1305 AES-GCM + Argon2id AES-CTR AES-CBC AES-ECB Triple DES-CBC Blowfish-CBC Blowfish-ECB DES-CBC DES-ECB PBE AES-256 (Jasypt)
Cifrado de clave públicaML-KEM-768 + AES-GCM X25519 + AES-GCM RSA-OAEP
Firmas digitalesML-DSA-65 Ed25519 ECDSA P-256 RSA-PSS

recomendado heredado roto histórico codificación (no es cifrado)

Desde la línea de comandos

El mismo jar es una herramienta de línea de comandos cuando recibe argumentos. El texto es el último argumento o la entrada estándar; las opciones son los parámetros del algoritmo; las verificaciones devuelven el código de salida 1 cuando fallan. Los verbos van en inglés (encrypt, decrypt, hash, sign, verify…) y los mensajes salen en el idioma del sistema, o en el que indiques con --lang=es.

java -jar cryptoKit-2.0.0.jar list
java -jar cryptoKit-2.0.0.jar sha256 hash "hola"
java -jar cryptoKit-2.0.0.jar aes-gcm encrypt --key=00112233445566778899aabbccddeeff --key-format=hex "atacad al alba"
java -jar cryptoKit-2.0.0.jar argon2id hash "caballo correcto grapa batería"
java -jar cryptoKit-2.0.0.jar keygen ed25519 > claves.pem
java -jar cryptoKit-2.0.0.jar ed25519 sign --private=@claves.pem "te debo 10 euros"
java -jar cryptoKit-2.0.0.jar enigma encrypt --rotors="IV II V" --positions="B L A" "WETTERBERICHT"
java -jar cryptoKit-2.0.0.jar --lang=es info ml-kem-768

Compatible con la versión 1.0

Los textos cifrados con cryptoKit 1.0 se siguen descifrando: DES, AES y Blowfish en ECB y CBC, AES-GCM y el PBE de Jasypt, con las claves y los IV escritos como texto exactamente igual que antes (la versión 1 escribía «(hexadecimal)» tras el resultado; basta con no copiarlo). Las pruebas lo comprueban contra la salida del jar real de la 1.0. La propia versión 1.0 sigue disponible en su página de descarga y en la rama legacy del repositorio.

Notas de seguridad

  • La aplicación es una herramienta para aprender y para tareas cotidianas, no un producto auditado. Sus algoritmos vienen de la plataforma Java y de Bouncy Castle, ambos muy revisados; la aplicación los combina con cuidado, pero no ha pasado una auditoría independiente.
  • Las claves escritas como texto (como en la versión 1) son débiles salvo que sean largas y aleatorias: mejor el dado, que genera claves aleatorias en hex, o el AES-GCM + Argon2id con contraseña.
  • No se envía nada por la red; no se guarda nada salvo el tema, el idioma y el último algoritmo.

Compilar desde el código fuente

git clone https://github.com/toniferr/cryptoKit.git
cd cryptoKit
mvn verify                      # compila, pasa las pruebas y genera target/cryptoKit-2.0.0.jar
java -jar target/cryptoKit-2.0.0.jar

Requisitos: JDK 21 o posterior y Maven 3.8 o posterior. El portal que estás leyendo vive en el mismo repositorio, en site/, y se genera con python site/build.py.

Historia del proyecto

  • 2017: primera versión, un proyecto de Eclipse con cifrados simétricos, hashes y Base64 sobre Bouncy Castle 1.57.
  • 2020: Java 11, Maven, SHA-2 y SHA-3, AES-GCM y Blowfish, integración continua y una wiki en español.
  • 2022: versión 1.0.0, un jar ejecutable con dependencias y cifrado con contraseña mediante Jasypt.
  • 2026: versión 2.0.0, reescrita desde el núcleo, con este portal.