Antecedentes
Nunca ... realmente ... necesita saber la contraseña del usuario. Solo desea verificar que un usuario entrante conozca la contraseña de una cuenta.
Hash It:
almacene las contraseñas de usuario hash (cifrado unidireccional) a través de una fuerte función hash. La búsqueda de "contraseñas de cifrado de c #" ofrece muchos ejemplos.
Consulte el creador de hash SHA1 en línea para obtener una idea de lo que produce una función hash (pero no use SHA1 como función hash, use algo más fuerte como SHA256).
Ahora, una contraseña con hash significa que usted (y los ladrones de bases de datos) no deberían poder revertir ese hash en la contraseña original.
Cómo usarlo:
Pero, usted dice, ¿cómo uso esta contraseña mezclada almacenada en la base de datos?
Cuando el usuario inicia sesión, le entregará el nombre de usuario y la contraseña (en su texto original). Simplemente use el mismo código hash para ingresar esa contraseña ingresada y obtener la versión almacenada.
Entonces, compare las dos contraseñas hash (hash de la base de datos para el nombre de usuario y la contraseña escrita y hash). Puede saber si "lo que escribieron" coincide "con lo que el usuario original ingresó para su contraseña" comparando sus valores hash.
Crédito adicional:
Pregunta: Si tuviera su base de datos, ¿no podría simplemente tomar una galleta como John the Ripper y comenzar a hacer hash hasta encontrar coincidencias con sus contraseñas hash almacenadas? (dado que los usuarios eligen palabras cortas de diccionario de todos modos ... debería ser fácil)
Respuesta: Sí ... sí que pueden.
Por lo tanto, debe 'sal' sus contraseñas. Ver el artículo de Wikipedia sobre sal
Consulte el ejemplo de "Cómo hacer hash de datos con sal" C #