django自带加密模块的使用

首先,引入模块:
 算法

 代码以下 复制代码

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

生成密码:
 
>>> 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')
Falsespa

既然每次生成的密文都不同,如何验证用户提交过来的明文与密文匹配呢?这就靠check_password去作了,check_password使用很是简单,只须要告诉它明文和密文它就会返回False or True验证结果.net

 代码以下 复制代码

 
>>> 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)
Truemd5

若是你不想每次都生成不一样的密文,能够把make_password的第二个函数给一个固定的字符串,好比:ci

 代码以下 复制代码
 
>>> 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就好

相关文章
相关标签/搜索