2017-08-10 35 views
0

我有一个传统的2010 Pylons应用程序,我想用一个更新的Django替换。Pylons/Pyramid应用程序中的Salt键在哪里?

在Django中,我的理解是用于哈希密码的Salt是配置文件中的SECRET_KEY。纠正我,如果我错了。很容易找到。(我错了,更正了)。

无论如何,由于在Django中使用了不同的散列算法,公司并不热衷于重置每个人的密码。所以我打算改变Django来匹配Pylons,或者找到一种方法来解密Pylons散列函数,然后在Django下重新加密。

问题是,我不知道Salt在应用程序中的位置,然后查看文档并使用Google搜索。任何人有想法?

+1

“我的理解是,用于哈希密码的Salt是配置文件中的SECRET_KEY” - 这是不正确的。每个密码都有一个不同的密码,它与算法一起存储在密码字段中,迭代次数和哈希值。请参阅[文档](https://docs.djangoproject.com/en/1.11/topics/auth/passwords/#how-django-stores-passwords)了解更多信息。 – Alasdair

+1

另外,你不能解密哈希。获得原始密码的唯一方法是暴力破解(如果使用了合适的哈希器,希望这是不可行的)。 – Alasdair

+0

好吧,基本上,唯一的选择是让每个人在新的哈希算法下重置密码? – sockpuppet

回答

1

在金字塔(或塔架)中没有使用盐的单一方法。将应用程序代码保存到数据存储中或将其检索到密码散列的实现。

这给你很大的自由。

这样做的一种方式可能是重现Django中的代码并继续将其用作哈希算法,因为它可能是安全的。快速修复或概念证明可以是安装django并从中导入代码(但如果许可证允许,或者只是重写它,我会亲自复制粘贴代码的一小部分)。你需要的散列部分可能少于15行,一旦剥离到最小值。

此外,我不建议按照您的问题的评论中的建议进行操作:在用户登录时迁移密码。因为您将永远被旧密码卡住,您必须保留代码以处理它们,加上处理新密码的新代码以及迁移代码。

+0

我刚刚意识到我给出了相反的问题的答案:有一个Django应用程序,你想要迁移到塔或金字塔。对于那个很抱歉 ;) –

相关问题