django自带加密模块的使用

首先,引入模块:

 代码如下 复制代码

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

生成密码:
 
>>> make_password("www.111cn.net", None, ‘pbkdf2_sha256‘)
u‘pbkdf2_sha256$12000$H6HRZD4DDiKg$RXBGBTiFWADyw+J9O7114vxKvysBVP+lz7oSYxkoic0=‘

这样就可以利用django自带的模块生成一组密码了,这个函数还有一个特点在于每次生成的密码还不一样:

 代码如下 复制代码

>>> make_password("www.111cn.net", None, ‘pbkdf2_sha256‘)
u‘pbkdf2_sha256$12000$H6HRZD4DDiKg$RXBGBTiFWADyw+J9O7114vxKvysBVP+lz7oSYxkoic0=‘
 
>>> make_password("www.111cn.net", None, ‘pbkdf2_sha256‘)
u‘pbkdf2_sha256$12000$9l09rJd9MbQj$0tJVXBZFN6WwD/qI3WELdrRWOU7Inb7im3uB/np2PPg=‘
 
>>> make_password("www.111cn.net", None, ‘pbkdf2_sha256‘) == make_password("www.111cn.net", None,
‘pbkdf2_sha256‘)
False

既然每次生成的密文都不一样,如何验证用户提交过来的明文与密文匹配呢?这就靠check_password去做了,check_password使用非常简单,只需要告诉它明文和密文它就会返回False or True验证结果

 代码如下 复制代码

>>> text = "www.111cn.net"
>>> passwd = make_password(text, None, ‘pbkdf2_sha256‘)
>>> print passwd 
pbkdf2_sha256$12000$xzMLhCNvQbb8$i1XDnJIpb/cRRGRX2x7Ym74RNfPRCUp5pbU6Sn+V3J0=
>>> print check_password(text, passwd)
True

如果你不想每次都生成不同的密文,可以把make_password的第二个函数给一个固定的字符串,比如:

 代码如下 复制代码
 
>>> make_password(text, "a", ‘pbkdf2_sha256‘)
u‘pbkdf2_sha256$12000$a$5HkIPczRZGSTKUBa5uzZmRuAWdp2Qe6Oemhdasvzv4Q=‘
>>> make_password(text, "a", ‘pbkdf2_sha256‘)
u‘pbkdf2_sha256$12000$a$5HkIPczRZGSTKUBa5uzZmRuAWdp2Qe6Oemhdasvzv4Q=‘

只要是任意字符串就可以,并且可以多个。但不能为空,如:

 代码如下 复制代码

>>> make_password(text, "", ‘pbkdf2_sha256‘)
u‘pbkdf2_sha256$12000$KBcG81bWMAvd$aJNgfTOGFhOGogLSTE2goEM3ifKZZ1hydsuFEqnzHXU=‘
 
>>> make_password(text, "", ‘pbkdf2_sha256‘)
u‘pbkdf2_sha256$12000$fNv3YU4kgyLR$1FI8mxArDHt6Hj/eR72YCylGTAkW7YMWTj+wV4VHygY=‘

为空的字符串就相当于:
1

 代码如下 复制代码
 
make_password(text, None, ‘pbkdf2_sha256‘)

至于make_password第三个参数是表示生成密文的一种方式,根据文档给出的大概有这几种:

 代码如下 复制代码

pbkdf2_sha256
    pbkdf2_sha1
    bcrypt_sha256
    bcrypt
    sha1
    unsalted_md5
    crypt

以上例子我使用了第一种加密方式pbkdf2_sha256,crypt和bcrypt都需要另外单独安装模块,unsalted_md5就是常见的md5加密,如果对加密哈希算法不是很了解,那么就使用django最新的哈希算法pbkdf2_sha256就好

时间: 2024-12-24 15:02:41

django自带加密模块的使用的相关文章

Django自带分页

urls.py 1 from django.conf.urls import url 2 from django.contrib import admin 3 from app01 import views 4 5 6 urlpatterns = [ 7 8 # 查看django自带的上一页和下一页 9 url(r'^index.html$', views.index), 10 11 ] views.py 1 from django.shortcuts import render,HttpRes

Django打造在线教育平台_day_3: 搭建后台管理系统Django自带的admin

1.后台管理系统的特点:权限管理.少前端样式.快速开发 2.Django自带的admin后台管理系统,新建项目时会自动建立,admin也可以看成一个app 运行了程序打开链接:http://127.0.0.1:8000/admin/,就进入了后台管理系统登录页面 3.新建超级用户: Tools 工具栏运行 run manage.py Task 输入:createsuperuser,再根据提示输入用户名.邮箱.密码 4.登录成功: 5.把系统语言设置为中文与设置本地时间:修改MxOnline/se

django自带wsgi server vs 部署uwsgi+nginx后的性能对比

一.下面先交代一下测试云主机 cpu: [email protected]:/tmp/webbench-1.5# cat /proc/cpuinfo |grep model model : 69 model name : Intel(R) Core(TM) i5-4260U CPU @ 1.40GHz [email protected]:/tmp/webbench-1.5# mem: [email protected]:/tmp/webbench-1.5# free -m total used

2.4、使用Django自带的admin用户管理,权限管理

如何创建项目请参考2.2.创建项目. 通常web服务会要求注册的用户通过用户名和密码登录,然后才可能管理自己的信息或者对一些页面进行授权,判断用户是否拥有执行某种操作的权限. Django已经提供了一个django.contrib.auth应用来处理登录,登出和权限验证,同时还提供了django.contrib.admin应用来管理用户.可以参考你的虚拟python环境的/lib/python27/site-packges/django/contrib/admin里面的文件和源码. 我们要做的就

为什么不能访问django自带的索引页

通过HTTP://192.168.160.128:8000访问虚拟机上的django索引页出现“ 无法访问此网站 192.168.160.128 拒绝了我们的连接请求. ” 是什么原因呢?费了好大一番劲之后,终于找到原因了: 如果你想改变服务器 IP ,把它和端口号一起传递即可.因此,要监听所有公共 IP 地址(如果你想在其他电脑上炫耀你的工作),请使用: python manage.py runserver 0.0.0.0:8000 原来是之前django自带的webserver只监听了本机i

django 自带分页

使用django 自带分页功能: from django.core.paginator import Paginator,EmptyPage,PageNotAnInteget EmptyPage 是在超出页数时改怎么做 PageNotAnInteget 使用在异常中出现错误的时候该怎么做 objs = [1,2,3,4,5,6,7,8,9] p = Paginator(objs,3) 每页显示3个 p.count 打印的是 objs里有多少个内容 p.num_pages 显示有多少页 p.pag

django 自带的auth认证系统

版本: python2.7 django 1.8.16 project名称:site_test, app: study 目录结构: -> site_test :tree . ├── db.sqlite3 ├── manage.py ├── site_test │   ├── __init__.py │   ├── __init__.pyc │   ├── settings.py │   ├── settings.pyc │   ├── urls.py │   ├── urls.pyc │   ├

Django 自带认证功能auth模块和User对象的基本操作

一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般需要username,password两个关键字参数. 如果认证信息有效,会返回一个  User  对象.authenticate()会在User 对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的. user = au

admin——django自带数据库管理工具

admin是Django自带的数据库管理工具,是一个app 在admin.py中可以自己定制类来使admin数据库管理页面展现自己想要查看的信息 models.py from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=6, dec