FOSUserBundle を使用して php サイトを Django ユーザー モデルに移行中です。
の内容app/config/security.yml
:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
PHP サイトでのユーザー テストからの password/salt の値:
- パスワード:
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 関数は次のとおりです。
FOSUserBundle: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Model/UserManager.php#L180
Symfony: https://github.com/symfony/symfony/tree/master/src/Symfony/Component/Security/Core/Encoder
解決済み:
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==