ASP.Net επικυρώσει τον κωδικό πρόσβασης με αλατισμένο hash

ψήφοι
38

Γι 'αυτό και έχουν ακολουθώντας τις παρακάτω οδηγίες για το πώς να hash κωδικό πρόσβασης. https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

Ήμουν σε θέση να hash τον κωδικό πρόσβασης με ένα άλας που αποθηκεύεται το αλάτι σε μια βάση δεδομένων και είμαι ανάκτηση του αλατιού από τη βάση δεδομένων μια χαρά. Πού είμαι πάρει σκοντάψει επάνω είναι? αν κατάλαβα αυτό σωστά, αν κατακερματίζεται έναν κωδικό πρόσβασης χωρίς αλάτι θα βγει το ίδιο, αν χρησιμοποιείτε το ίδιο αλάτι (από τη βάση δεδομένων) με ένα hash θα πρέπει να επικυρώσει και να βγαίνει με ένα διαφορετικό κωδικό πρόσβασης κατακερματισμένη.

Ερώτηση: Γιατί δεν μπορώ να πάρω τον ίδιο κωδικό πρόσβασης κατά τη χρήση του αλατιού αποθηκεύονται στη βάση δεδομένων;

Κωδικός: Ο κωδικός προσπαθεί να επικυρώσει τον κωδικό πρόσβασης χρησιμοποιώντας το αλάτι που αποθηκεύονται στη βάση δεδομένων. Αλλά έχω δύο διαφορετικούς κωδικούς πρόσβασης.

string password = txtSignPass.Text;
        string email = txtSignEmail.Text;
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[db].ToString());
        SqlCommand cmd = new SqlCommand(SELECT * FROM users WHERE email = @email;, conn);
        cmd.Parameters.AddWithValue(@email, email);
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            byte[] salt = Encoding.UTF8.GetBytes(dr[salt].ToString());
            string hashed = Convert.ToBase64String(KeyDerivation.Pbkdf2(
                password: password,
                salt: salt,
                prf: KeyDerivationPrf.HMACSHA1,
                iterationCount: 10000,
                numBytesRequested: 256 / 8));
Δημοσιεύθηκε 11/01/2018 στις 17:00
χρήστη
Σε άλλες γλώσσες...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more