【问题标题】:Migrating from FOSUserBundle to Django从 FOSUserBundle 迁移到 Django
【发布时间】:2013-02-02 19:21:19
【问题描述】:

我正在将带有 FOSUserBundle 的 php 站点迁移到 Django 用户模型。

app/config/security.yml的内容:

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

来自 PHP 站点的用户测试的密码/盐值:

  • 密码:3EBoIIMrD73n2y+4hMUpCq2lmJ8tHStrBweonQClP+/Jhmaw7ipLbamQJQfB87Acg45sBH3HlgnpKI+QZN7m/Q==
  • 盐:2n4fxtazv1us0csgg8s880ck4skcskg
  • 使用的密码是amdpower

我尝试使用此代码生成相同的哈希:

raw_password = 'amdpower'
salt = '2n4fxtazv1us0csgg8s880ck4skcskg'

salted = '%s{%s}' % (raw_password, salt)
digest =  hashlib.sha512(salted).digest()
for i in range(5000):
   digest = hashlib.sha512(digest).digest()
print base64.b64encode(digest)
>>> wqgbbFZ/IPvwZktbmYz7inffofmT5HbRNf04BQ+w33Jgman8uVYbjWyiKzfp5EIFX2wqYGOb7hRzi5BdZlzDKw==

我尝试过的哈希码有什么问题?如何生成相同的哈希?

更新:

PHP 函数是:

已解决:

raw_password = 'amdpower'
salt = '2n4fxtazv1us0csgg8s880ck4skcskg'

salted = '%s{%s}' % (raw_password, salt)
digest =  hashlib.sha512(salted).digest()
for i in range(4999):
    digest = hashlib.sha512('%s%s' % (digest, salted)).digest()
print base64.b64encode(digest)
>>> 3EBoIIMrD73n2y+4hMUpCq2lmJ8tHStrBweonQClP+/Jhmaw7ipLbamQJQfB87Acg45sBH3HlgnpKI+QZN7m/Q==

【问题讨论】:

  • 您确定这是在 PHP 代码中将盐添加到密码中的方式吗? 您是否查看了特定的 PHP 代码以了解它们是如何/调用什么的哈希?您确定 PHP 代码和库是正确的吗? (我问是因为 PHP 代码运行范围从优秀到 WTF。)
  • @PeterRowell 我已经更新了答案

标签: django fosuserbundle


【解决方案1】:

在这里,我重新创建了 Symfony 如何对密码进行哈希处理的场景。

http://codepad.org/AhC64q4r

现在就是把它转换成 python,我知道你可以做到 Juan :)

【讨论】:

    猜你喜欢
    • 2013-06-27
    • 2016-03-30
    • 2017-02-14
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2014-01-20
    相关资源
    最近更新 更多