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需要另安装库。

转载于:https://my.oschina.net/u/1765113/blog/394955

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值