2012-04-01 49 views

回答

1

我做一些类似的迁移是这样的:

  1. 创建色器件模型用户提供旧密码哈希和盐的附加字段

  2. 复制旧数据库中的所有用户进入新(新密码哈希会因为我们不知道用户的真实通行证)

  3. 补丁验证方法 - 当用户尝试使用没有新传递散列的帐户登录(这意味着这是旧用户) - 我们通过旧验证来验证他ALGOR ithm,如果通过,我们创造了新的密码散列通(用色器件)

+0

哦,看起来有点详细的过程,请问我可以指点任何有关类似案例的参考或博客吗?或者可能是一个例子,非常感谢 – simo 2012-04-02 06:12:48

+0

对不起,我自己做了,没有任何外部来源.. – MikDiet 2012-04-02 11:01:12

+0

它可以,请你解释第三点,“我们通过旧认证算法验证他”,我如何验证用户与旧的认证算法的Joomla?只是一些伪代码的例子来说明想法.. – simo 2012-04-02 11:46:17

3

我知道这是旧的,但跨越这来了,后来找到了答案,所以我会张贴他人。

joomla中的密码字段是密码的md5,随机生成的盐加上冒号和随机生成的盐。

它会是这个样子:

33da105d239879dae4cdaf58557985c:L8QwPXN02cltv0lkGIyD3JRDU0AR5fcA 

所以要回到它...

1)查询用户名的分贝(发表用户)

user = User.find_by_username(params[:username]) 

2)然后分割密码并获得第二个元素:

salt = user.password.split(":")[1] 

3)取(由用户发布)的密码,再加盐和检查对一个在DB

user.password == Digest::MD5.hexdigest(params[:password] + salt).to_s + ":" + salt 

如果你有正确的用户名/密码组合,它应该是真实的......

+1

谢谢杰西,我不知道盐在Joomla的密码字段 – simo 2012-10-04 08:03:55

相关问题