Алгоритм хеширования паролей в Rails с использованием только ruby - PullRequest
1 голос
/ 25 февраля 2010

Кто-нибудь знает, как я запускаю простые текстовые пароли через алгоритм автоматического хэширования без использования rails?Похоже, по умолчанию для authlogic используется sha512.

У меня есть база данных паролей в виде простого текста (да, я знаю ... плохо), и мне нужно импортировать их в новую БД, использующую настройку authlogic.

Этот скрипт ruby ​​находится за пределами рельсов, поэтому я не хочу использовать основанные на рельсах команды authlogic.

У меня есть

требуют 'authlogic'

в скрипте ruby ​​

Я новичок в модулях ruby, но пытался вызвать метод пароля, например:

Authlogic :: ActsAsAuthentic :: Password:: Methods :: InstanceMethods.password ('password_here')

Из-за этого я получил сообщение об ошибке «метод без пароля», но в этом стеке модулей есть метод «пароль» в этом стеке модулей..

Спасибо!

Ответы [ 3 ]

3 голосов
/ 25 февраля 2010

Я не просто попытался бы импортировать их прямо вверх, потому что помните, что вам, вероятно, также понадобится создать «соль». Вам просто нужно создать совершенно нового «пользователя» для каждого из ваших текущих пользователей:

User.create({:username => username, :email => email, :password => password, :password_confirmation => password })

и таким образом вы будете знать, что он делает это так, как задумал authlogic. И пока ваша модель User использует authlogic, она будет использовать методы authlogic для сохранения паролей.

1 голос
/ 01 апреля 2010

Вы можете использовать

transition_from_crypto_providers

опция для Authlogic.

Цитирование из документации

Допустим, вы изначально зашифрованы ваши пароли с Sha1. Sha1 это начинает вступать в партию с MD5 и вы хотите переключиться на что-то сильнее. Нет проблем, просто укажите Ваш новый и улучшенный алгоритм с параметр crypt_provider, а затем пусть Authlogic знаю, что вы переходите из Sha1, используя эту опцию. Authlogic позаботится обо всем, включая переход ваших пользователей на новый алгоритм. В следующий раз пользователь авторизуется, ему будут предоставлены доступ с использованием старого алгоритма и их пароль будет восстановлен с новый алгоритм. Все новые пользователи будут очевидно, использовать новый алгоритм как хорошо.

Таким образом, вы можете просто импортировать старых пользователей с их существующими паролями, и они будут обновляться при входе пользователей.

Конечно, если вы просто хотите использовать методологию шифрования от Authlogic, без каких-либо вещей на Rails, просто скопируйте код из http://github.com/binarylogic/authlogic/blob/master/lib/authlogic/crypto_providers/sha512.rb

0 голосов
/ 01 апреля 2010

Примечание к ответу выше: Обязательно используйте скрипт / консоль, а затем:

load 'ruby_script.rb'

чтобы запустить его. Я пытался заставить это работать с IRB, и, конечно, это не работало.

...