django自动加密

众所周知,数据库用户密码不能是明文,所以要加密,django会自带加密,解密功能。

from django.contrib.auth.hashers import make_password, check_password

可以查看其源码:

def make_password(password, salt=None, hasher='default'):
    """
    Turn a plain-text password into a hash for database storage
    Same as encode() but generates a new random salt.  If
    password is None or blank then UNUSABLE_PASSWORD will be
    returned which disallows logins.
    """
    if not password:
        return UNUSABLE_PASSWORD
    hasher = get_hasher(hasher)
    password = smart_str(password)
    if not salt:
        salt = hasher.salt()
    salt = smart_str(salt)
passwd = make_password(text, None, 'pbkdf2_sha256') #text:获取的密码明文

注意:这个passwd是随时再变化的,可以用check_password来进行检测

check_password(text, passwd)   #返回true / false

加密类型有以下几种:

    pbkdf2_sha256
    pbkdf2_sha1
    bcrypt_sha256
    bcrypt 
    sha1
    unsalted_md5
    crypt

在 Django 1.5 之前,Django 对于用户密码的加密方式一直是 SHA1,但在 Django 1.5 之后,密码的加密方式默认改为了 PBKDF2 算法与 SHA256 哈希值。bcrypt,crypt需要另安装库。

你可能感兴趣的:(加密,django)