API intermediaria segura para generar hashes MD5 para n8n
Cryto es una API REST altamente segura construida con Express.js que proporciona endpoints para generar hashes criptográficos MD5. Está diseñada específicamente como intermediaria para ser integrada con n8n (plataforma de automatización de flujos de trabajo), pero puede ser utilizada por cualquier cliente REST.
La API incluye características avanzadas de seguridad como autenticación por API key, rate limiting, validación robusta de parámetros, headers de seguridad (Helmet), CORS restrictivo, logging de seguridad y un endpoint keep-alive para mantener el servicio activo en plataformas como Render.
- ✅ 🔑 Autenticación API Key - Protección completa contra acceso no autorizado
- ✅ 🛡️ Rate Limiting - Protección contra ataques DDoS y fuerza bruta
- ✅ 🔍 Validación de Entrada - Sanitización y validación completa de parámetros
- ✅ 🔐 Headers de Seguridad - Helmet.js con CSP, HSTS, y más
- ✅ 🌐 CORS Restrictivo - Control granular de orígenes permitidos
- ✅ 📊 Logging de Seguridad - Monitoreo y alertas de actividad sospechosa
- ✅ Generación de hashes MD5 mediante dos métodos (GET y POST)
- ✅ Endpoint keep-alive para evitar que el servicio se duerma
- ✅ Health check endpoint con información de seguridad
- ✅ Manejo de errores con respuestas JSON consistentes
- ✅ Timestamps y request IDs en todas las respuestas
- ✅ Soporte para múltiples entornos (desarrollo/producción)
- Node.js >= 18.0.0
- npm o yarn
- Clave API segura (para producción)
git clone https://github.com/CreativityTech-co/Cryto.git cd Cryto npm install# Copia el archivo de configuración npm run setup # Edita tu archivo .env nano .env# .env (REQUERIDO) API_KEY=tu-clave-api-super-segura-aqui # ⚠️ OBLIGATORIO ALLOWED_ORIGINS=https://tu-dominio.com # Orígenes permitidos NODE_ENV=production # Entorno de ejecución ENABLE_REQUEST_LOGGING=false # Logging (false en prod) # Configuración opcional PORT=3000 RATE_LIMIT_WINDOW_MS=900000 # 15 minutos RATE_LIMIT_MAX_REQUESTS=100 # Max requests por IP# Método recomendado - OpenSSL openssl rand -base64 32 # Método alternativo - Node.js node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Modo producción:
npm startModo desarrollo (con auto-reinicio):
npm run devEl servidor estará disponible en
http://localhost:3000GET
/Verifica el estado de la API y lista los endpoints disponibles.
Respuesta:
{ "status": "ok", "message": "Crypto API running", "uptime": 125.43, "endpoints": { "/hash/md5": "Generate MD5 hash (GET with query params)", "/hash/md5/post": "Generate MD5 hash (POST with body)", "/keepalive": "Keep service alive" } }GET
/hash/md5Genera un hash MD5 concatenando
tokenyaccesskey.Parámetros de consulta:
Parámetro Tipo Requerido Descripción tokenstring Sí Token a hashear accesskeystring Sí Clave de acceso a concatenar Ejemplo de solicitud:
curl "http://localhost:3000/hash/md5?token=mytoken&accesskey=mykey"Respuesta exitosa (200):
{ "success": true, "hash": "5d41402abc4b2a76b9719d911017c592", "timestamp": "2026-01-15T16:30:45.123Z" }Respuesta con error (400):
{ "success": false, "error": "Missing required query param: token" }POST
/hash/md5/postAlternativa POST para generar hashes MD5. Útil para cadenas largas o datos sensibles.
Body (JSON):
{ "token": "mytoken", "accesskey": "mykey" }Ejemplo de solicitud:
curl -X POST http://localhost:3000/hash/md5/post \ -H "Content-Type: application/json" \ -d '{ "token": "mytoken", "accesskey": "mykey" }'Respuesta exitosa (200):
{ "success": true, "hash": "5d41402abc4b2a76b9719d911017c592", "timestamp": "2026-01-15T16:30:45.123Z" }Respuesta con error (400):
{ "success": false, "error": "Missing required fields: token and accesskey" }GET
/keepaliveEndpoint para mantener el servicio activo. Útil cuando se despliega en plataformas que ponen en sleep servicios inactivos (ej: Render).
Respuesta:
{ "status": "alive", "uptime": 245.67, "lastRequest": "2026-01-15T16:35:22.456Z" }Para integrar Cryto con n8n, utiliza el nodo HTTP Request:
- Método: GET o POST (según prefieras)
- URL:
http://tu-dominio:puerto/hash/md5o/hash/md5/post- Parámetros:
token: El valor a hashearaccesskey: La clave de acceso- Headers (POST):
Content-Type: application/json { { $request( 'http://localhost:3000/hash/md5?token=' + encodeURIComponent(token) + '&accesskey=' + encodeURIComponent(accesskey), ).json(); } }{ "express": "^4.18.2", // Framework web "crypto-js": "^4.2.0", // Librería de criptografía "cors": "^2.8.5" // CORS middleware }Dependencias de desarrollo:
{ "nodemon": "^3.0.2" // Auto-reinicio durante desarrollo }npm start # Inicia el servidor en modo producción npm run dev # Inicia el servidor con nodemon para desarrolloCryto/ ├── server.js # Archivo principal de la aplicación ├── package.json # Configuración del proyecto ├── package-lock.json # Lock file de dependencias ├── .gitignore # Archivos a ignorar en git └── README.md # Este archivo
- Conecta tu repositorio GitHub a Render
- Crea un nuevo Web Service
- Configura:
- Build Command:
npm install- Start Command:
npm start- Environment: Node
- Añade un cron job para el keep-alive:
*/10 * * * * curl https://tu-servicio.onrender.com/keepaliveFROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY server.js . EXPOSE 3000 CMD ["npm", "start"]
⚠️ Nota importante: MD5 no es criptográficamente seguro para nuevas aplicaciones. Se recomienda:
- Usar MD5 solo cuando es requerido por sistemas legados o integraciones específicas
- Nunca usar MD5 para almacenar contraseñas
- Para nuevas aplicaciones, considera usar SHA-256 o SHA-512
El servidor registra información útil en consola:
[2026-01-15T16:30:45.123Z] Hash request - Token length: 10, AccessKey: myke...Para desactivar logs en producción, comenta la línea
console.log()enserver.js.Este proyecto está bajo licencia MIT. Ver archivo LICENSE para más detalles.
CREATIVITY TECH - GitHub
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature)- Commit tus cambios (
git commit -m 'Add some AmazingFeature')- Push a la rama (
git push origin feature/AmazingFeature)- Abre un Pull Request
Si encuentras problemas o tienes sugerencias, abre un issue en el repositorio.
- ✨ Lanzamiento inicial
- ✨ Endpoints GET y POST para generación de hashes MD5
- ✨ Endpoint keep-alive para mantener servicio activo
- ✨ Health check endpoint
- ✨ CORS habilitado
- ✨ Validación robusta de parámetros
Creado con ❤️ por CREATIVITY TECH
CreativityTech-co/Crypto
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|