在简单的python脚本中创建django密码

时间:2019-01-08 21:19:18

标签: python django passwords

我需要生成一个加密的密码,该密码可以在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创建加密的字符串会更好,但是我敢打赌,实现起来更加困难。

2 个答案:

答案 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;