Django: Auth: Password Hashing

 20th August 2020 at 2:19pm

使用默认配置时,Django 会采用 PBKDF2 算法及 SHA256 摘要算法,迭代 150000 次(Django 2.2)来生成密码:

  1. 生成一个密码学安全的随机字符串作为盐
  2. 使用 PBKDF2 算法,将密码原文、盐及迭代次数(默认 150000 次)作为参数,并以 SHA256 为摘要算法,生成一串 hash 值
  3. "%s$%d$%s$%s" % (self.algorithm, iterations, salt, hash) 形式将密码保存至数据库(默认 auth_user 表)

代码入口在 django.contrib.auth.base_user.AbstractBaseUser.set_password