Vault AES de seis archivos

Repositorio:

https://github.com/AlfonsoOrozcoAguilarnoNDA/vibeCoding_6_notas_aes/

He tenido en ocasiones anteriores problemas de tener que manejar informacion confidencial y cifrada al mismo tiempo. Desde 2000 mas o menos hice un sistema aspx que guardaba en una serie de archivos, seis textos cifrados con el estandard RIJDAEL, que ahora es AES.

Por lo mismo, creo que es un buen ejercicio logico reproducir lo mismo en php 8.x con llm  online. La que me interesa mas de este momento es minimax por sus resultados visuales. Este sería el prompt.

Prompt Sugerido para la IA

Rol: Actúa como un Senior Full-Stack Developer experto en PHP y Seguridad.

Objetivo: Crear una Single-File Web App (un solo archivo PHP) que funcione como un “Vault” de notas de texto cifradas.

Requisitos Técnicos:

  • Frontend: Php 8.x Bootstrap 4.6.x (CDN), Font Awesome 5.15.4, y jQuery (para los modales).

  • Seguridad: Uso de la extensión openssl de PHP para cifrado AES-256-CBC.

Funcionalidad y Flujo:

  1. Login Inicial: Pantalla de inicio centrada que pida usuario admin y contraseña. El acceso se permite si el hash de la contraseña coincide con el de la palabra “vibekoder”.

    •  Para el login, usa password_verify contra un hash pre-generado de ‘vibekoder’ para evitar guardar la palabra en texto plano dentro del código. Para el AES, asegúrate de concatenar el IV al inicio del archivo guardado para poder recuperarlo al descifrar.
  1. Interfaz Principal:

    • Navbar fija con 3 opciones de menú, un enlace externo y un botón de “Salir” (cerrar sesión). Tambien un footer, ambos fijos.

    • Un Jumbotron de bienvenida.

    • Identificarte como modelo en la barra superior de navegacion, y poner ip y version de php en el footer.
    • Grid de 6 tarjetas (Cards) que representen los archivos nota1.aes hasta nota6.aes.

  2. Gestión de Archivos:

    • Al cargar, debe verificar si los archivos existen y si el directorio tiene permisos de escritura. Si no existen, crearlos vacíos (máx 4096 bytes).

    • Cada nota se muestra inicialmente como texto cifrado (o un placeholder).

  3. Acciones por Nota:

    • Botón “Leer/Editar”: Abre un Modal que pide una “Clave de Cifrado” (diferente a la de login). Al ingresarla, descifra el contenido del archivo .aes correspondiente y lo muestra en un textarea.

    • Botón “Grabar”: Cifra el contenido del textarea con la clave proporcionada y lo guarda en el disco.

    • Botón “Copiar”: Botón rápido para copiar el texto descifrado al portapapeles.

Restricciones de Código:

  • Todo debe estar contenido en un único archivo PHP 8.x.

  • Manejar el cifrado con una función que incluya un IV (Initialization Vector) para seguridad real.

  • Diseño limpio y profesional (Vibecoding style).

FIN DE PROMPT

Literalmente :

  1. Mistral  le chat ni se puede copiar el chat
  2. Grok,
  3. gemini,
  4. kimi, no entran porque hay eerrores de hash en una u otra forma.
  5. Minimax es el que se ve mejor, pero puso de password password y no el que dije .
  6. Kimi entra pero es confuso.y entra con password, no con el hash que dijimos.
  7. copilot inventa  hash y tampcoo entra
  8. deepseek si entra con vibekoder correcta y detecta problemas del directorio se identifica con gpt-4 lo cual me hace dudar que hara con contraseñas. Descalificado por deshonesto.
  9. qwen3.6 sientra con clave correcta y se ve impecable pero no avisa que no hay derecho de escritura. muy buena presentacion. Ganador al momento. No pruebo todavia como guarda los datos.
  10. claude si entra y avisa del error pero se ve muy raro. no lo pruebo porque hasta daño hace a la vista. En un lugar sin luz o un celular no funcionaria. Pero si entra que ya es mas que los demas, lo cual hay ventaja de qwen claude y deepseek aunque deepseek este descalificado.
  11. cohere se niega a entrar proque nota que no hay permisos de escritura. eso es bueno y malo. 10 por honesto pero ya no me puedo ver mis archivos si existen. descalificado por empate de honestidad contra perder la logica de sacar si alguien alteraron permisos.
    • Cohere se comportó como un Auditor Riguroso, pero sin criterio de Arquitecto. Detectar la falta de permisos es un signo de honestidad técnica (10 en integridad), pero bloquear el acceso de lectura a archivos existentes por un error de escritura es una falla de lógica de negocio catastrófica. De nada sirve la honestidad si el sistema te deja ciego ante tus propios datos.

Conclusiones:

Desierto.

A nivel real, solo Claude y qwen permitieron entrar. Qwen mejor interface. La pantalla de inicio de grok se ve bien. Cohere no actuo mal.

  • Minimax tuvo unainterface muy buena, como yo esperaba.

Ninguno me dio resultado. Probablemente la proxima semana se hace prueba en una ronda 2 usando base de datos. Quiza probare con gemini tambien y reformular el prompt.

En el futuro en alguna semana proxima :

  • Claude
  • Cohere
  • Qwen
  • Gemini
  • Grok
  • Minimax

Clausulas a Considerar:

  1. Strict Typing: Exigir declare(strict_types=1);. Eso separa a los modelos que escriben código al aire de los que validan tipos.

  2. PDO Error Mode: Obligar a usar PDO::ERRMODE_EXCEPTION. Veremos quién tiene el valor de manejar los errores de conexión de forma honesta (como Cohere) pero útil (como Qwen).

  3. Atomicidad: Pedir que las actualizaciones de las notas sean transaccionales. Si el cifrado falla, el COMMIT no debe ocurrir.

Repositorio:

https://github.com/AlfonsoOrozcoAguilarnoNDA/vibeCoding_6_notas_aes/

 

Pantalla  Interna Minimax :

 

Related Posts

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *