CryptoBox es un sistema de cifrado híbrido avanzado que combina RSA y AES para proporcionar máxima seguridad en el cifrado de archivos. Versión mejorada con soporte para:
- ✅ Reutilización de claves públicas - Las claves RSA se reutilizan automáticamente
- ✅ Contraseñas personalizadas con hashing seguro - PBKDF2 con 100,000 iteraciones
- ✅ Base de datos SQLite local - Almacenamiento seguro de contraseñas
- ✅ Generación inteligente de claves - Basada en BD con fallback a archivos
- ✅ Gestión completa de contraseñas - CRUD completo desde la interfaz
- Contraseñas personalizadas protegidas con PBKDF2WithHmacSHA256
- Salt único por contraseña para máxima seguridad
- Base de datos SQLite para almacenamiento persistente
- Derivación de claves contextual por alias
- Las claves RSA se reutilizan automáticamente si ya existen
- Optimización del proceso de cifrado
- Compatibilidad total con archivos existentes
- Almacenamiento local de contraseñas hasheadas
- Interfaz completa para gestionar aliases
- Estado y estadísticas de la base de datos
- Eliminación segura de contraseñas
- Java 8 o superior
- wget (para descargar dependencias)
- Bash (para scripts de compilación)
# Compilar el proyecto (descarga automáticamente SQLite JDBC)
./compile.sh# Ejecutar la aplicación
./run.shOpción 2: Cifrar un archivo con contraseña personalizada
- Selecciona el archivo a cifrar
- Ingresa un alias único
- Define tu contraseña personalizada
- La contraseña se guarda automáticamente en la BD
Opción 4: Descifrar un archivo con contraseña personalizada
- Selecciona el archivo .lock
- Ingresa la contraseña correspondiente
- El sistema verifica contra la BD automáticamente
Opción 7: Gestionar contraseñas
- Guardar nueva contraseña para un alias
- Eliminar contraseñas existentes
- Ver todas las contraseñas almacenadas
Opción 8: Ver aliases almacenados
- Muestra todos los aliases con contraseñas en BD
- Indica si tienen claves RSA disponibles
- Estado de la base de datos
- Reutilización automática de claves RSA
- Métodos específicos para contraseñas personalizadas
- Integración con PasswordManager
- Compatibilidad con sistema legacy
- Hashing seguro con PBKDF2
- Generación de salt único
- Derivación de claves para cifrado
- Validación de contraseñas
- Gestión completa de SQLite
- CRUD para contraseñas
- Consultas optimizadas
- Manejo de conexiones
- Interfaz expandida con 9 opciones
- Gestión completa de contraseñas
- Manejo de errores mejorado
- Cierre apropiado de recursos
cryptobox/
├── src/
│ ├── App.java # Punto de entrada
│ ├── cli/
│ │ └── MainCLI.java # Interfaz mejorada
│ ├── core/
│ │ ├── CryptoBox.java # Motor de cifrado mejorado
│ │ ├── PasswordManager.java # 🆕 Gestión de contraseñas
│ │ ├── DatabaseManager.java # 🆕 Gestión de BD
│ │ └── models/
│ │ └── DataFile.java # Modelo de datos
│ ├── utils/
│ │ └── Utils.java # Utilidades
│ ├── data/ # Datos del sistema
│ │ ├── cryptobox.db # 🆕 Base de datos SQLite
│ │ ├── key/ # Claves RSA
│ │ ├── encrypt/ # Archivos cifrados
│ │ ├── decrypt/ # Archivos descifrados
│ │ └── extension/ # Info de extensiones
│ └── central/ # Archivos originales
├── lib/
│ └── sqlite-jdbc.jar # 🆕 Driver SQLite
├── bin/ # Archivos compilados
├── compile.sh # 🆕 Script de compilación
├── run.sh # 🆕 Script de ejecución
└── README.md # Esta documentación
- Usuario selecciona archivo y define alias
- Ingresa contraseña personalizada
- Sistema verifica si el alias existe en BD
- Si no existe, guarda la contraseña hasheada
- Deriva clave de cifrado usando salt contextual
- Reutiliza claves RSA existentes o genera nuevas
- Cifra archivo con AES derivado de la contraseña
- Cifra clave AES con RSA reutilizable
- Usuario selecciona archivo .lock
- Sistema extrae alias del nombre del archivo
- Solicita contraseña al usuario
- Verifica contraseña contra hash en BD
- Deriva la misma clave de cifrado
- Descifra usando claves reutilizables
- Recupera archivo original
- Algoritmo: PBKDF2WithHmacSHA256
- Iteraciones: 100,000
- Salt: 32 bytes aleatorios por contraseña
- Hash: 64 bytes de salida
- Salt contextual usando alias + salt original
- XOR para combinar contexto sin comprometer seguridad
- Claves únicas por alias aunque se use la misma contraseña
- Contraseñas nunca almacenadas en texto plano
- Solo hashes y salts en base de datos
- Conexiones SQLite locales (sin red)
- ✅ Archivos existentes: Totalmente compatible con sistema anterior
- ✅ Claves RSA: Reutiliza claves generadas previamente
- ✅ Contraseña por defecto: Funciona como fallback para archivos legacy
- ✅ Migración: Sin necesidad de re-cifrar archivos existentes
# Compilar proyecto
./compile.sh
# Ejecutar aplicación
./run.sh
# Ver estructura de BD (requiere sqlite3)
sqlite3 src/data/cryptobox.db ".schema"
# Limpiar compilación
rm -rf bin/
# Backup de BD
cp src/data/cryptobox.db backup_$(date +%Y%m%d).db- Reutilización de claves: Evita regeneración innecesaria de claves RSA
- Contraseñas seguras: Sistema robusto de hashing y validación
- Base de datos local: Almacenamiento persistente y eficiente
- Interfaz mejorada: Opciones claras para todas las funcionalidades
- Manejo de recursos: Cierre apropiado de conexiones de BD
- Claves RSA se generan solo una vez por alias
- Base de datos SQLite optimizada para consultas locales
- Hashing intensivo solo durante autenticación
- Reutilización de conexiones donde es posible
Para contribuir al proyecto:
- Fork el repositorio
- Crea una rama para tu feature
- Implementa mejoras manteniendo compatibilidad
- Ejecuta tests de compatibilidad
- Envía pull request
CryptoBox - Cifrado híbrido seguro y eficiente con gestión avanzada de contraseñas.