Получить пароль в текстовом формате из формата Hash_Secret, т.е. из соли в Rails - PullRequest
1 голос
/ 20 мая 2011

Я пишу очень простую систему входа в систему для приложения Rails.Я использую RESTful-аутентификацию.Это довольно обычная установка, где я отправляю электронную почту и пароль для аутентификации пользователя.

Здесь я использовал REMEMBER ME ?, если тот же пользователь снова хочет войти в систему, а затем с помощью cookie, пользователь может повторно войти в систему.Теперь все равно, что я хочу напечатать электронную почту и пароль в соответствующем текстовом поле.Электронная почта вставлена ​​в текстовое поле, но у меня возникла проблема с отображением пароля в текстовом поле.

Во время входа в систему используется такое условие

@person.password_hash == BCrypt::Engine.hash_secret(@password, @person.password_salt)

Как мне получить свой пароль?пароль в текстовом виде?

Ответы [ 2 ]

3 голосов
/ 20 мая 2011

[ирония] Почему вы даже хэшируете их, если хотите отобразить их в текстовом виде? [/ Irony]

Но если быть серьезным: хеширование - это односторонняя операция, вы не можете отменить ее.http://en.wikipedia.org/wiki/Hash_function

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

При написании функции "запомнить меня"посмотрите, как это делает devise: http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Rememberable Если вы хотите, чтобы эта функция была действительно безопасной, для ее кодирования требуется определенное количество работы.

0 голосов
/ 29 июня 2011

После долгих поисков в Интернете я обнаружил, что BCrypt::Engine.hash_secret - это одностороннее шифрование пароля.Это означает, что нет способа полностью изменить процесс.Поэтому, если вы пытаетесь создать текст пароля из BCrypt :: Engine.hash_secret, вы не сможете этого сделать.

...