Django之密码加密
通过django自带的类库,来加密解密很方便,下面来简单介绍下;
导入包:
from django.contrib.auth.hashers import make_password, check_password
从名字就可以看出来他们的作用了。
一个是生成密码,一个是核对密码。
例如:
make_password("123456")
得到结果:
u'pbkdf2_sha25615000MAjic3nDGFoi$qbclz+peplspCbRF6uoPZZ42aJIIkMpGt6lQ+Iq8nfQ='
另外也可以通过参数来生成密码:
>>> make_password("123456", None, 'pbkdf2_sha256')
校验:
校验就是通过check_password(原始值, 生成的密文)来校验密码的。
>>> check_password("123456","pbkdf2_sha25615000MAjic3nDGFoi$qbclz+peplspCbRF6uoPZZ42aJIIkMpGt6lQ+Iq8nfQ=") True
Django中的加密算法
Django中的加密的算法有很多种
PASSWORD_HASHERS = [ 'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.Argon2PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.BCryptPasswordHasher', ]
默认是PBKDF2(本系列不作深入探究)算法。如果要更改加密方式,只需要变更下顺序,把想要应用的算法放在第一位即可。比如:要应用Argon2算法进行加密,则配置更改成如下:
PASSWORD_HASHERS = [ 'django.contrib.auth.hashers.Argon2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.BCryptPasswordHasher', ]
注:Argon2该算法是从1.10版本开始有的。它的设计在定制硬件上比在普通CPU上计算更容易。而且Argon2加密算法在2015年 Password Hashing Competition的中是夺冠的。
在ananlysis中应用的是该算法。在analysis/settings.py文件中增加上述节点。因为Argon2加密算法是需要依赖第三方库 argon2-cffi library 的,所在应用该算法的时候首先需要安装 argon2-cffi library,执行命令:pip install django[argon2]。
下面开始把加密算法应用到项目中。