美文网首页
Django用户模块密码加密

Django用户模块密码加密

作者: 临渊如峙 | 来源:发表于2018-05-03 19:15 被阅读0次

    一、使用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用户模块密码加密

          本文链接:https://www.haomeiwen.com/subject/cgplrftx.html