Hai chicos,

Llegué a saber que almacenar valor de hash de una contraseña es segura, uno de Método preferido de Almacenar las Contraseñas En la Base de datos

  • Cómo la sal y el hash de una contraseña de valor con c#?

  • Cómo comparar tanto los valores almacenados en la base de datos y la dada por el usuario?

InformationsquelleAutor ACP | 2010-01-05

6 Comentarios

  1. 21

    La forma más popular de hacer esto es utilizando un algoritmo de hash. Hay un excelente blog aquí acerca de cómo utilizar el algoritmo MD5 hash de una cadena, pero hay muchos otros ejemplos en la System.Cryptography espacio de nombres.

    Como #2, el general paso a paso guía de cómo funcionaría este sistema sería el siguiente:

    De inscripción en el registro:

    1. Hash de la contraseña de un usuario mediante su algoritmo especificado y almacenarlo en la base de datos
    2. Sal este hash (opcional, pero de preferencia)

    En el inicio de sesión de usuario /& contraseña de verificación:

    1. Buscar en la base de datos para el nombre de usuario
    2. Si es que existe, recuperar la contraseña con algoritmo hash
    3. Hash y la sal, la contraseña introducida y compararla con la contraseña recuperada

    Es relativamente largo aliento, pero es muy seguro.

    Hay otro muy en profundidad sobre la guía de hash y salazón aquí.

    • Información adicional: Hay unas cuantas más versiones de la de inicio de sesión y el proceso de registro se describe en la siguiente ASÍ, pregunta: stackoverflow.com/questions/1471654/reversing-an-md5-hash/…
    • La sal es una entrada adicional para el hashing el proceso normalmente, pero por lo demás una buena y clara explicación. +1
    • por favor, ayúdenme en esta pregunta, stackoverflow.com/questions/2863034/…
    • ¿cómo sabes que la sal utilizar cuando él inicios de sesión? porque ellos son diferentes para cada usuario, ¿no
  2. 5

    Simple hash:

    public string GetSHA256Hash(string s)
            {
                if (string.IsNullOrEmpty(s))
                {
                    throw new ArgumentException("An empty string value cannot be hashed.");
                }
    
                Byte[] data = System.Text.Encoding.UTF8.GetBytes(s);
                Byte[] hash = new SHA256CryptoServiceProvider().ComputeHash(data);
                return Convert.ToBase64String(hash);
            }
  3. 0

    Estrictamente hablando, debería la sal de la contraseña entonces hash, para evitar un ataque de diccionario. Puede utilizar cualquiera de las implementaciones de la HashAlgorithm clase abstracta en el System.Cryptography espacio de nombres para calcular el hash actual mejor opción sería probablemente uno de los SHA-2 algoritmos.

    Almacena el hash no se la contraseña, y comparar los valores de hash para autenticar al usuario.

    • cualquier ejemplo
  4. 0

    Al igual que los otros han dicho, hay muchas opciones.

    Aquí está el código de ejemplo (usando MD5 en lugar de SHA) de Microsoft que podría ayudarle a conseguir empezar

       using System;
       using System.Security.Cryptography;
       using System.Text;
    
       string sSourceData;
       byte[] tmpSource;
       byte[] tmpHash;
    
       sSourceData = "MySourceData";
       //Create a byte array from source data.
       tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
    
       //Compute hash based on source data.
       tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);
  5. 0

    Para la mezcla tiene varios algoritmos admitidos en el Sistema.De seguridad.La criptografía, para su caso de uso, usted probablemente querrá elegir un SHA basado en hash o algo similar.

    Con respecto a la comparación: no Se puede comparar el valor de DB y que el usuario le dio a usted. Utiliza la misma codificación/función de hash que se utiliza para almacenar la contraseña en la base de datos, en primer lugar, esta vez con la entrada del usuario. Si el resultado es igual a la suma de la base de datos de la contraseña era probablemente correcta.

    La intención es que nadie que tenga acceso a la base de datos puede recuperar las contraseñas en texto claro y ni siquiera el programa necesita saber acerca de ella (solo la parte que acepta la entrada de usuario va a tener por un tiempo corto).

    Enlaces (tal vez incluso duplicados):

Dejar respuesta

Please enter your comment!
Please enter your name here