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]

下面开始把加密算法应用到项目中。

posted @ 2020-05-24 14:55  Tracydzf  阅读(755)  评论(0编辑  收藏  举报