2015-12-02 4 views
0

сценарий выглядит так: пароль возвращается во входные данные, зарегистрированные как хешированный пароль,
1-й пользователь не обновляет пароль, в этом случае просто возвращает текущий хешированный пароль,
2- еще пользователь обновляет свой пароль/password, затем введите новый пароль и сохраните его в базе данных.
так, как проверить возвращенный пароль, если хешировать или нет?Проверьте, не введен ли введенный пароль

код:

public int UpdatePrivilege(User user, int changerId, string pwd) 
{ 
    if (user.pwd == pwd) //how to check if hashed or not. 
    { 
     user.pwd = _Md5Hash(user.pwd); 
    } 
    return dalc.Update(user, changerId); 
} 

во-вторых, позволяет сказать, что пользователь не обновляет пароль действительно старый пароль будет поддерживать, как это после того, как процесс сохранения?

+1

Но я не вижу, как связанные ответы решают проблему OP. Если пользователь вводит новый пароль, например '7A34FE', регулярное выражение других ответов скажет ему, что он уже хэширован. Вам нужно будет отслеживать, изменил ли пользователь пароль с помощью события «TextChanged» вашего входного файла или сравнения окончательного текста во входном файле, помещенном в хэш, который вы ввели ранее. –

ответ

1

Вы находитесь в неправильном направлении. Рассмотрим следующий случай:

  1. Мой пароль abc, который будет хэширования (скажем, MD5) и хранится в базе данных, как 75d22b7a1b5be026653445831b9f0c61.

  2. Когда я открываю страницу, используется хеш-строка (возможно, в коде пользовательского интерфейса).

  3. Я меняю свой пароль на abc на 75d22b7a1b5be026653445831b9f0c61.

  4. Ваш код получает мой новый пароль и судит о его неизменности. НЕПРАВИЛЬНО.

Вы никогда не можете сказать, если пользователь изменил свой пароль от текста пароля, только код интерфейса (скажем, Javascript в веб-приложениях) знает, что. Вы должны позволить коду пользовательского интерфейса сообщать фоновому контенту, если он изменен.

+0

, если вы ввели тот же пароль, он изменится, но его значение будет сохранено как старый пароль, потому что вы ввели те же символы. поэтому изменение даты может показать, что пароль изменен. Я прав ? – Saif

+0

@Smart Если я изменю свой пароль на '75d2 ...', в базе данных он должен быть 'c6b24c3e4e98ae50cc5a5f1fd7eed790', хешем md5 моего нового пароля. –

Смежные вопросы