Además he programado una función que encripta datos mediante el operador XOR en JavaScript, para que cuando un usuario inicie su sesión su contraseña viaje encriptada.
Cada usuario tiene una clave privada que se le asigna cuando se registra, para poder saber con que clave se codificó, cuando llega la información al servidor, este encripta la información encriptada en XOR, a MD5.
Mi problema es que cuando un usuario entra a la página, el sistema automáticamente le asigna una clave que crea aleatoriamente, y cuando el usuario inicia la sesión su contraseña se encripta con esta clave aleatoria, cuando llega al servidor, este lo desencripta, y con la cadena (que es la contraseña del usuario) el servidor lo vuelve a encriptar en XOR, pero esta vez con la clave privada del usuario y luego lo encripta en MD5 y compara ambas claves: la que hay en la base de datos, y la que ha introducido el usuario, si son iguales, le da acceso al sistema, pero si son distintas, se lo niega.
El problema es, que cuando el usuario inicia su sesión necesito mandar junta la contraseña encriptada, la clave de desencriptación, por lo que si alguien intercepta la comunicación podría desencriptar la contraseña del usuario fácilmente y todo se iría al traste.
¿Como puedo solucionar este agujero? ¿Existe una solución más eficaz (me abstengo a los certificados)?
GRACIAS A TODOS!! SE LO AGRADEZCO MUCHO !!
Saludoss
![Adios](http://static.forosdelweb.com/fdwtheme/images/smilies/adios.gif)