Estoy escribiendo una aplicación C# que será de código abierto y necesito poder almacenar la información de inicio de sesión guardada para cada usuario. Normalmente, solo cifraría la contraseña y luego la almacenaría en un archivo de configuración del usuario, pero me preocupa que debido a que el código sea de código abierto, de alguna manera se derrota el punto de encriptación. Como todo lo que tendrían que hacer es mirar el código y agarrar la clave de encriptación.Almacenamiento de una contraseña guardada en la aplicación de Código abierto
De acuerdo, al menos lo haría mucho más difícil que la contraseña que se almacena en texto plano. Pero, ¿hay alguna forma decente de cifrar la contraseña, pero haciendo que sea al menos extremadamente difícil de descifrar, incluso si tuviera la fuente? Tal vez hacer que sea al menos casi imposible de descifrar en cualquier computadora que no sea la que fue encriptada?
EDIT: Aclaración ... Estoy almacenando contraseñas del lado del CLIENTE, NO las contraseñas para validar su inicio de sesión para el servicio. Es un cliente de un servicio web preexistente del que no tengo control. Solo quiero almacenar las contraseñas localmente para el inicio de sesión automático ... como lo haría cualquier cliente de chat.
EDIT 2: Lo siento por no haberlo hecho antes. Pero las contraseñas deben recuperarse en texto claro en algún momento y el hashing NO es una opción :(Incluso si el servicio me dejara pasar el hash de la contraseña que de alguna manera vencería el propósito porque el hash sería tan bueno como una contraseña: P
No entiendo lo que quiere decir acerca de los hashes ... Necesito el texto claro y actual de la contraseña en algún momento porque debe ser pasado de mi cliente al servicio (que es una conexión encriptada) y no puede ser un hash. –
A partir de la contraseña que recibe, simplemente calcule nuevamente el hash y compárelo con el hash que guardó en el DB. Si coinciden, las contraseñas coinciden. Por supuesto, si necesita la contraseña para iniciar sesión en otro lugar desde su servidor, esto no lo ayudará. – Krumelur
Cambió la pregunta en parte, clarificando realmente, votar abajo es un título injusto. – Lloyd