【文件属性】:
文件名称:密码管理-libmodbus源码解析
文件大小:7.37MB
文件格式:PDF
更新时间:2024-07-14 01:47:25
PDF
11.9密码管理
如非必要,不要重新实现密码管理功能,Django 提供的功能足够安全和灵活。本节说明 Django 如何存储密
码、如何配置哈希方式,以及处理哈希密码的实用工具。
11.9.1 Django 如何存储密码
Django 提供了一个灵活的密码存储系统,默认使用 PBKDF2 算法。User对象的 password属性是这种格式的
字符串:
$$$
这是存储用户密码的各个部分,之间以美元符号分隔。各部分分别是:哈希算法、算法的迭代次数(工作系
数)、随机盐值和最终得到的密码哈希值。
algorithm是 Django 支持的某种单向哈希(或称“密码存储”)算法(参见下文)。iterations是在哈希值上
运用算法的次数。salt是使用的随机种子,而 hash是单向算法得到的结果。Django 默认使用 PBKDF2算法,
得到 SHA256 哈希值。这是 NIST推荐使用的密码增强机制,对多数用户来说足够了。这种算法相当安全,
需要用大量时间计算才能破解。然而,根据具体的需求,你可能想选择其他的算法,甚至自己动手实现一种
算法,满足特殊的安全条件。再次说明,多数用户无需这么做。如果你不确定自己该不该这么做,那有可能
就不需要。
如果确实需要这么做,请接着读:Django 根据 PASSWORD_HASHERS设置选择算法。这个设置的值是一个类列
表,列出你所安装的 Django 支持的哈希算法。其中第一个元素(即 settings.PASSWORD_HASHERS[0])用于存
储密码,其余的都可用于检查现有密码。
也就是说,如果想使用其他算法,要修改 PASSWORD_HASHERS设置,把你选择的算法列在第一位。PASS-
WORD_HASHERS的默认值如下:
PASSWORD_HASHERS = [
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
11.9 密码管理 - 171