Rails authlogic密码哈希算法仅使用ruby

有没有人知道如何在不使用rails的情况下通过authlogic hasing算法运行纯文本密码? 看起来authlogic的默认值是sha512。

我有一个纯文本密码数据库(是的,我知道……很糟糕),需要将它们导入到使用authlogic设置的新数据库中。

这个ruby脚本在rails之外,所以我不想使用基于rails的authlogic命令。

我有

要求’authlogic’

在ruby脚本中

我是ruby模块的新手,但试图调用密码方法,如:

Authlogic :: ActsAsAuthentic:密码::方法:: InstanceMethods.password( ‘password_here’)

我从中得到了“无密码方法”错误,但在authlogic代码中的模块堆栈下面有一个“密码”方法。

谢谢!

我不会尝试直接导入它们,因为记住你可能也需要创建“盐”。 您应该为每个当前的用户创建一个全新的“用户”:

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

那样你就会知道它正在按照authlogic的意图去做。 只要您的用户模型使用authlogic,它就会使用authlogic的方法来保存密码。

你可以使用

 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

请注意上面的答案:确保使用脚本/控制台,然后:

 load 'ruby_script.rb' 

运行它。 我试图让这个与irb一起工作,当然这不起作用。