我需要生成一个加密的密码,该密码可以在Django中的简单python脚本中使用。我需要导入什么软件包/模块来实现该目标?我正在寻找类似的东西:
from django.auth import create_password_from_string
django_password = create_password_from_string('coolpassword')
背景是,我在server1上有一个PHP应用程序,应该与server2上的Django应用程序共享帐户。在PHP应用程序中创建帐户后,我想启动一个python脚本,该脚本为django应用程序生成加密的密码并将其传输到server2。
当然,对于这种用例,用PHP创建加密的字符串会更好,但是我敢打赌,实现起来更加困难。
答案 0 :(得分:1)
您要寻找的是make_password。
基本用法:
只需传递您的纯文本密码,它就会返回您需要的哈希值。
此外,根据项目要求和规格,在server2应用程序上you can set the algorithm:还要传递 hasher 参数(注意:在Django中,默认值为PBKDF2)。
环境要求:
首先,如果您不熟悉Python,我的建议是看一下PYTHONPATH env var,它用来“告诉”他必须在其中搜索的解释器。 然后,如果需要,可以使用Django定义运行实例必须指向的设置文件。这是通过另一个环境变量 DJANGO_SETTINGS_MODULE 完成的,对于django-admin,也可以内联设置:
django-admin runserver --settings=server2.settings
make_password示例:
假设您的Python / Django env / path变量配置正确,您将:
$ python manage.py shell
>>> from django.contrib.auth.hashers import make_password
>>> make_password('password', 'generate something random', 'pbkdf2_sha256')
结果:
'pbkdf2_sha256$36000$generate something random$0F6M8tj8Y65YXuUgfRkDAwYqrky6Ob5JN+HLPO+6Ayg='
答案 1 :(得分:0)
我实际上找到了一种简单的PHP方法,更适合我的用例:
$password = 'password'
$salt = 'generate something random'
$iterations = 120000
$hash = base64_encode(hash_pbkdf2 ( 'sha256' , $password , $salt , $iterations, 32, true));
$django_password = 'pbkdf2_256'. '$' . $iterations . '$' . $hash;