Python Django之密码的加密和解密
发布日期:2021-07-01 00:08:46 浏览次数:2 分类:技术文章

本文共 1295 字,大约阅读时间需要 4 分钟。

在 Django 1.5 之前,Django 对于用户密码的加密方式一直是 SHA1,存在数据库的样例如下:

sha1$1bb66$f6c9b132a39287884997412ec7b6c8a543c79a06
但在 Django 1.5 之后,密码的加密方式默认改为了 PBKDF2 算法与 SHA256 哈希值,存在数据库的样例如下:
pbkdf2_sha256$10000$RQPpfjqHFLPp$YJ70H2ZCCkgqs27I4yP0bx5L7Ve7pnHvNDKJVFhINsw=

 

 

通过django自带的类库,来加密解密很方便,下面来简单介绍下;

导入包:

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

从名字就可以看出来他们的作用了。

一个是生成密码,一个是核对密码。

注意:

 

[直接在python命令解释器导入会报错:

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

原因:

python启动方式python,会启动交互解释器,需要告诉Django使用哪个设置文件,Django会搜索DJANGO_SETTINGS_MODULE环境变量,它被设置在settings.py中,

需要设置为:multiDatabase.settings

 

解决方法:用python manage.py shell 来启动命令解释器而不是python,因为python manage.py shell中包含了Django使用哪个settings.py文件]

例如:

make_password("123456")

得到结果:

u'pbkdf2_sha25615000MAjic3nDGFoi$qbclz+peplspCbRF6uoPZZ42aJIIkMpGt6lQ+Iq8nfQ='

另外也可以通过参数来生成密码:

>>> make_password("123456", None, 'pbkdf2_sha256')

校验:

校验就是通过check_password(原始值, 生成的密文)来校验密码的。http://www.cnblogs.com/ccorz/p/Django-zhi-mi-ma-jia-mi.html

 
  1. >>> check_password("123456","pbkdf2_sha25615000MAjic3nDGFoi$qbclz+peplspCbRF6uoPZZ42aJIIkMpGt6lQ+Iq8nfQ=")

  2. True

  1.  

转载地址:https://lztom.blog.csdn.net/article/details/102400407 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:模糊控制中比例系数的确定和输入e和ec,即变化和变化率的选取
下一篇:Django使用富文本编辑器-tinymce(前端+后端)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月18日 08时59分04秒