сравнение соли и хешированных паролей во время входа не похоже - PullRequest
0 голосов
/ 19 мая 2010

Я хранил значения соли и хеша пароля при регистрации пользователя ... Но при их входе в систему я затем солюю и хэширую пароль, данный пользователем, что происходит, когда получается новая соль и генерируется новый хэш ....

string password = collection["Password"];
reg.PasswordSalt = CreateSalt(6);
reg.PasswordHash = CreatePasswordHash(password, reg.PasswordSalt);

Эти заявления есть как при регистрации, так и при входе в систему ....

соль и хеш при регистрации был eVSJE84W и 18DE22FED8C378DB7716B0E4B6C0BA54167315A2

При входе в систему это были 4YDIeARH и 12E3C1F4F4CFE04EA973D7C65A09A78E2D80AAC7 ..... Любое предложение ....

    public static string CreateSalt(int size)
    {
        //Generate a cryptographic random number.
        RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
        byte[] buff = new byte[size];
        rng.GetBytes(buff);

        // Return a Base64 string representation of the random number.
        return Convert.ToBase64String(buff);
    }

    public static string CreatePasswordHash(string pwd, string salt)
    {
        string saltAndPwd = String.Concat(pwd, salt);
        string hashedPwd =
         FormsAuthentication.HashPasswordForStoringInConfigFile(
         saltAndPwd, "sha1");

        return hashedPwd;
    }

1 Ответ

5 голосов
/ 19 мая 2010

Прямо сейчас вы генерируете другую соль при регистрации и входе в систему. Вам нужно использовать одну и ту же соль для перемешивания, иначе вы получите разные значения. То есть вам нужно сохранить соль в базе данных вместе с паролем и повторно использовать ее для хеширования, когда пользователь попытается войти в систему позже.

Шаги:

  1. Пользователь регистрируется и предоставляет простой текстовый пароль
  2. Вы генерируете новую случайную соль и используете ее для хеширования простого текста
  3. Вы храните соль и хэш в базе данных
  4. Позже пользователь пытается войти, предоставив новый текстовый пароль. Вы получаете хэш и соль из базы данных
  5. Вы используете соль для хеширования простого текста
  6. Сравните два хеша
...