none
Es posible obtener el Hash ? RRS feed

  • Pregunta

  • Hola buenos días ayer hice una pregunta sobre sobre como desincriptar el SHA1 Y MD5 juntos y tenia razón era algo incensario hacerlo me tenia que quedar con uno solo y opte por MD5

    Les explico mi problema no se si es posible que al cargar los datos de mi contraseña encriptada, y me carge la contraseña original

    en este caso seria admin en md5 seria asi 21232f297a57a5a743894a0e4a801fc3

    les muestro el código para encriptar 

    public static string Encriptar(string Passwrod)
            {
                string resultado = Passwrod;
    
                MD5 mds = MD5.Create();
    
                byte[] data = mds.ComputeHash(Encoding.UTF8.GetBytes(resultado));
    
    
                StringBuilder sBuilder = new StringBuilder();
    
                for (int i = 0; i < data.Length; i++)
                {
                    sBuilder.Append(data[i].ToString("x2"));
                }
                return sBuilder.ToString();
            }


    y para hacer lo contrario seria 

     public static string DesEncriptar(string Password)
            {
                string resultado = Password;
    
                MD5 Md5 = new MD5CryptoServiceProvider();
    
                byte[] EnCode = Md5.ComputeHash(Encoding.UTF8.GetBytes(resultado));
    
                BitConverter.ToString(EnCode);
    
                return System.Text.RegularExpressions.Regex.Replace(BitConverter.ToString(EnCode).ToLower(), @"-", "");
            }


    Cuando la guardo la contraseña lo hago así esto perfecto

    MDU.Tipo = cbx_tipo_usuario.Text;
                    MDU.Usuario = txt_usuario.Text;
                    MDU.Password = Modelo_Login.Encriptar(txt_password.Text);


    de igual manera puedo iniciar sesión, pero el único detalle es que no puedo actualizar el registro  

      Este es la parte del código que ocupo para descifrar, pero siempre me sigue mostrando otros encriptado diferente.
         Modelo_Usuario Usuario = BLU.CargarDatos(_Id_Usuario);
                    cbx_tipo_usuario.Text = Usuario.Tipo;
                    txt_usuario.Text = Usuario.Usuario;
                    txt_password.Text = Modelo_Login.DesEncriptar(Usuario.Password);

    martes, 13 de marzo de 2018 15:10

Respuestas

  • hola

    >>me tenia que quedar con uno solo y opte por MD5

    recomendaria que uses el SHA1, es mas seguro

    >>Les explico mi problema no se si es posible que al cargar los datos de mi contraseña encriptada, y me carge la contraseña original

    no es posible, el hash solo aplica en un unico sentido

    la idea es siempre aplicar el algoritmo y comparar, por eso es un solo sentido

    >>pero el único detalle es que no puedo actualizar el registro 

    como habia comentado el password no se actualiza, se regenera

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 13 de marzo de 2018 15:18
  • Les explico mi problema no se si es posible que al cargar los datos de mi contraseña encriptada, y me carge la contraseña original

    No, no es posible. Tienes un error grave: MD5 no es un algoritmo para encriptar, sino un algoritmo para calcular un resumen criptográfico (hash). La diferencia en este caso es vital: el resumen criptográfico esta expresamente diseñado de tal manera que sea imposible invertirlo. En otras palabras, no se puede "desencriptar". No se puede obtener el texto original a partir de su resumen.

    Si necesitas cifrar la contraseña de forma invertible (cosa que normalmente se procura evitar siempre que sea posible), entonces necesitas un algoritmo de cifrado (tal como AES o DES) y no un algoritmo de hash (tal como SHA o MD5).

    • Marcado como respuesta Ronal Funes martes, 13 de marzo de 2018 17:12
    martes, 13 de marzo de 2018 15:21
    Moderador
  • Buenas Ronal,

    MD5 al igual que SHA son algoritmos digestivos, es decir, eliminan parte de la información al hacer el cifrado, por lo tanto , son unidireccionales, es decir, solo valen para cifrar, no se pueden descifrar.

    Lo que estas haciendo al intentar descifrar, no es mas que volver a hashear el valor (lo mismo que haces para cifrarlo)

    La manera de utilizar estos cifrados para hacer login, es guardar en tu DB el valor del hash, y cuando quieras saber si existe, hashear el texto de la contraseña que mete el usuario  y comparar las dos contraseñas hasheadas.

    Si lo que quieres hacer un cifrado bidireccional, para poder descifrarlo, deberías revisar algo cono AES o Rijndael,

    ambos son bidireccionales y te valdrían para lo que tu quieres, pero con MD5 o SHA (sea la version que sea de SHA)

    no vas a poder revertir de el valor cifrado al valor original.

    Si tienes alguna duda nos comentas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta Ronal Funes martes, 13 de marzo de 2018 17:12
    martes, 13 de marzo de 2018 15:22

Todas las respuestas

  • hola

    >>me tenia que quedar con uno solo y opte por MD5

    recomendaria que uses el SHA1, es mas seguro

    >>Les explico mi problema no se si es posible que al cargar los datos de mi contraseña encriptada, y me carge la contraseña original

    no es posible, el hash solo aplica en un unico sentido

    la idea es siempre aplicar el algoritmo y comparar, por eso es un solo sentido

    >>pero el único detalle es que no puedo actualizar el registro 

    como habia comentado el password no se actualiza, se regenera

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 13 de marzo de 2018 15:18
  • Les explico mi problema no se si es posible que al cargar los datos de mi contraseña encriptada, y me carge la contraseña original

    No, no es posible. Tienes un error grave: MD5 no es un algoritmo para encriptar, sino un algoritmo para calcular un resumen criptográfico (hash). La diferencia en este caso es vital: el resumen criptográfico esta expresamente diseñado de tal manera que sea imposible invertirlo. En otras palabras, no se puede "desencriptar". No se puede obtener el texto original a partir de su resumen.

    Si necesitas cifrar la contraseña de forma invertible (cosa que normalmente se procura evitar siempre que sea posible), entonces necesitas un algoritmo de cifrado (tal como AES o DES) y no un algoritmo de hash (tal como SHA o MD5).

    • Marcado como respuesta Ronal Funes martes, 13 de marzo de 2018 17:12
    martes, 13 de marzo de 2018 15:21
    Moderador
  • Buenas Ronal,

    MD5 al igual que SHA son algoritmos digestivos, es decir, eliminan parte de la información al hacer el cifrado, por lo tanto , son unidireccionales, es decir, solo valen para cifrar, no se pueden descifrar.

    Lo que estas haciendo al intentar descifrar, no es mas que volver a hashear el valor (lo mismo que haces para cifrarlo)

    La manera de utilizar estos cifrados para hacer login, es guardar en tu DB el valor del hash, y cuando quieras saber si existe, hashear el texto de la contraseña que mete el usuario  y comparar las dos contraseñas hasheadas.

    Si lo que quieres hacer un cifrado bidireccional, para poder descifrarlo, deberías revisar algo cono AES o Rijndael,

    ambos son bidireccionales y te valdrían para lo que tu quieres, pero con MD5 o SHA (sea la version que sea de SHA)

    no vas a poder revertir de el valor cifrado al valor original.

    Si tienes alguna duda nos comentas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    • Marcado como respuesta Ronal Funes martes, 13 de marzo de 2018 17:12
    martes, 13 de marzo de 2018 15:22
  • Gracias por tu respuesta lo tomare en cuenta  
    martes, 13 de marzo de 2018 17:11