Django用户模块密码加密

一、使用django默认的加密方法,即哈希算法

1、注册时加密

from django.contrib.auth.hashers import make_password

...
user.password = make_password(password)  # 明文密码经过加密处理
user.save()

2、登录验证

# 系统验证
from django.contrib.auth import authenticate

user = authenticate(username=username, password=password)

#手动验证
user.check_password(password)

二、自定义加密算法

1、md5算法

import hashlib

def calc_md5(password):
      md5_obj = hashlib.md5()
      md5_obj.update(password.encode('utf-8'))
      return md5_obj.hexdigest()

2、sha1算法

import hashlib

def calc_sha1(password):
      sha1_obj = hashlib.sha1()
      sha1_obj.update(password.encode('utf-8'))
      return sha1_obj.hexdigest()

3、 md5+salt(随机字符串)加密,防止查表法破解密码

import random
from hashlib import md5

# 获取由4位随机大小写字母、数字组成的salt值
def create_salt(length=4):
    salt = ''
    chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
    len_chars = len(chars) - 1
    for index in range(length):
        salt += chars[random.randint(0, len_chars)]
    return salt

# 获取原始密码+salt的md5值
def create_md5(pwd, salt):
    md5_obj = md5()
    pwd = pwd.encode('utf-8')
    salt = salt.encode('utf-8')
    md5_obj.update(pwd + salt)
    return md5_obj.hexdigest()

你可能感兴趣的:(Django用户模块密码加密)