Реализация случайной соли md5, включая новую регистрацию / смену пароля - PullRequest
0 голосов
/ 29 марта 2011

Я пытаюсь реализовать алгоритм случайной соли md5 в существующем приложении. Пароли пользователей хранятся в базе данных как хэш md5. Для существующих пользователей выполняются следующие шаги

На стороне клиента (javascript)

client_password = md5(md5(plain_password) + random_salt)

На стороне сервера

server_password = md5(md5_password + same_random_salt),
check client_password to server_password

Я изо всех сил пытаюсь найти решение для хранения пароля пользователя md5 без соли в базе данных на случай смены пароля.

Спасибо

Ответы [ 2 ]

3 голосов
/ 29 марта 2011

Прежде всего: не используйте MD5: он недостаточно силен.

Отличное предложение от @Shaggy Frog, используйте bycrypt.Эти сообщения должны помочь вам:

https://stackoverflow.com/questions/2299434/bcrypt-implementation-in-javascript

Нужно ли хранить соль с помощью bcrypt?

Реализация JSBcrypt в Google Code


См. bCrypt JavaDoc .

Что вы будете делать на сервере, когда кто-то сохранит пароль:

BCrypt.hashpw(plain_password, salt);

Когда кто-то пытается войти:

if(BCrypt.checkpw(password_typed_by_user, stored_hash)
{
  //itmatches.. log him/her in.
} 

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

Когда пароль изменится , вам нужно снова взять пароль (на сервере) в виде простого текста и снова его хешировать, как вы делали это при первоначальном сохранении.Если вы думаете о поиске, нет никакого способа, это точка хеширования.Как и большинство веб-сайтов, вы можете изменить пароль на несколько случайных чисел, а затем отправить его по электронной почте на запрошенный адрес.

2 голосов
/ 29 марта 2011

Шифрование на стороне клиента бесполезно, поскольку в конечном итоге вы не можете контролировать результат.Работает только шифрование на стороне сервера.

Хранение паролей в виде хэшей MD5 не является лучшей практикой.Вот как сайты легко взламываются.Соли вам не помогут.

Используйте bcrypt .

...