2009-10-31 11 views
6

Cómo restaurar el valor de una cadena después de usar FormsAuthentication.HashPasswordForStoringInConfigFile()cómo descifrar una cadena

tengo una cadena s1 = "abc", entonces

FormsAuthentication.HashPasswordForStoringInConfigFile (s1, "SHA1 ") = A9993E364706816ABA3E25717850C26C9CD0D89D

Cómo puedo descifrar "A9993E364706816ABA3E25717850C26C9CD0D89D" de nuevo a "abc" ??

Respuesta

19

No se puede, Hash Function son funciones de una sola vía. es por eso que se usa para contraseñas, porque no se puede obtener la contraseña utilizando alguna función inversa en el valor hash.

13

Siguiendo con la respuesta de Baget. La razón por la cual hash contraseñas es evitar que tengas que almacenar la contraseña de texto plano para la autenticación.
En su lugar, almacena el hash de la contraseña.
Su proceso de autenticación/inicio de sesión pasa a ser algo como esto:

El usuario ingresa la contraseña.
Hash la contraseña que han introducido.
Compara el hash introducido con el hash almacenado.
Si los hashes coinciden, la contraseña es válida para que el usuario se autentique.

La razón por la que esto se hace es para proteger los detalles de autenticación de sus usuarios. Entonces, si su archivo de contraseñas o su base de datos pasaron a ser de dominio público, entonces un usuario malintencionado no podría pretender ser un usuario genuino.

Por lo tanto, la naturaleza de la función de hashing significa que es de una sola manera y por lo tanto no se puede recuperar el texto sin formato original.

Esa es la teoría, por supuesto en la práctica se vuelve más complicado que eso.
La mayoría de los usuarios tienden a usar contraseñas que pueden recordar fácilmente, lo que significa que todos sus mejores esfuerzos en seguridad pueden anularse porque si alguien obtiene su contraseña/base de datos, puede crear un diccionario de palabras comunes y fuerza bruta iterar y hash hasta que encuentren un hash coincidente en su lista.

Para evitar esto, muchas personas utilizan una técnica de "salazón" en la que la contraseña tiene una cadena criptográficamente "aleatoria" añadida a la contraseña antes del hash. Lea esto para obtener más información details

El otro problema aquí es la solidez de su algoritmo hash; debe asegurarse de no crear una colisión, es decir, dos piezas de texto sin formato que produzcan el mismo valor hash.
Muchos algoritmos hash más antiguos como MD5 y SHA1 se ven cada vez más vulnerables en este sentido.

MD5 considered broken
SHA1 also considered broken

espero que ayude y me di cuenta de que eso es probablemente un poco más de su pedían pero yo creo que es importante la gente a entender los problemas de seguridad en la aplicación de código de autenticación

+0

Buena Respuesta !! :-) – Baget

Cuestiones relacionadas