pycharm中做web应用(14)基于Django和mysql 做用户登录验证4在
在前面的user表中,为了
基于DJango的密码的加密、验密操作
在Django架构下,django.contrib.auth.hashers 是django内置的加解密包,模块中定义了相关的加解密函数和类,主要有:
1. make_password()
2. check_password()
3. mask_hash()
4. get_hasher()
5. UnsaltedMD5PasswordHasher()
6. is_password_usable()
7. BCryptPasswordHasher()
8. identify_hasher()
使用之前,首先要导入该包,例如:
from django.contrib.auth.hashers import make_password
下面举例进行说明:
加密
加密就是使用django.contrib.auth.hashers模块的make_password方法,把用户输入的名文加密后,获取加密密文的方法,原型为:
make_password(原始密码[,固定字串][,加密方式])
参数1: 原始密码: 需要加密的字符串
参数2: 是否每次都生成不同的加密串,默认为None, 如果给定任意一个字符串,则表示每次生成相同的加密串。
参数3: 表示加密算法,常见的加密算法有:
‘pbkdf2_sha256’, 'pbkdf2_sha1', 'bcrypt_sha256', 'unsalted_md5' 等.
动态密码常见的有下面几种形式:
make_password(原始密码)
make_password(原始密码,None)
make_password(原始密码,'')
每次产生的密码均不同,返回值为加密后的密码,例如输入明文密码为:‘123456’,得到密文的代码如下:
from django.contrib.auth.hashers import make_password
print(make_password('123456')) # 把明文密码转换为密文密码
结果如下图:
要得到固定的加密密码,需要使用:
make_password(原始密码[,固定字串]) 或
make_password(原始密码[,固定字串][,加密方式])
的形式,例如:
我们可以把加密后的密文再存储到user表中,这样,即使有人破解了数据库,查询了user表,也无法达到用户密码,安全性大大提高了。
验密
django.contrib.auth.hashers模块的验密函数原型为:
check_password (原始密码, 加密后的密码),验证相同return True,否则返回False
利用上面的密码进行验证:
首先导入:
from django.contrib.auth.hashers import check_password
执行结果如下: