当前位置: 移动技术网 > IT编程>脚本编程>Python > django加密解密api

django加密解密api

2018年12月25日  | 移动技术网IT编程  | 我要评论

raccua,投辖留宾,非布司他

分别给出了两个api,一个创造密码,一个验证密码正好满足需求。于是赶紧试试:

首先,引入模块:

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

生成密码:

1
2
>>> make_password("qttc", none, 'pbkdf2_sha256')
u'pbkdf2_sha256$12000$h6hrzd4ddikg$rxbgbtifwadyw+j9o7114vxkvysbvp+lz7osyxkoic0='

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

1
2
3
4
5
6
7
8
9
>>> make_password("qttc", none, 'pbkdf2_sha256')
u'pbkdf2_sha256$12000$h6hrzd4ddikg$rxbgbtifwadyw+j9o7114vxkvysbvp+lz7osyxkoic0='
 
>>> make_password("qttc", none, 'pbkdf2_sha256')
u'pbkdf2_sha256$12000$9l09rjd9mbqj$0tjvxbzfn6wwd/qi3weldrrwou7inb7im3ub/np2ppg='
 
>>> make_password("qttc", none, 'pbkdf2_sha256') == make_password("qttc", none,
'pbkdf2_sha256')
false

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

1
2
3
4
5
6
>>> text = "qttc"
>>> passwd = make_password(text, none, 'pbkdf2_sha256')
>>> print passwd
pbkdf2_sha256$12000$xzmlhcnvqbb8$i1xdnjipb/crrgrx2x7ym74rnfprcup5pbu6sn+v3j0=
>>> print check_password(text, passwd)
true

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

1
2
3
4
>>> make_password(text, "a", 'pbkdf2_sha256')
u'pbkdf2_sha256$12000$a$5hkipczrzgstkuba5uzzmruawdp2qe6oemhdasvzv4q='
>>> make_password(text, "a", 'pbkdf2_sha256')
u'pbkdf2_sha256$12000$a$5hkipczrzgstkuba5uzzmruawdp2qe6oemhdasvzv4q='

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

1
2
3
4
5
>>> 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第三个参数是表示生成密文的一种方式,根据文档给出的大概有这几种:

  1. pbkdf2_sha256
  2. pbkdf2_sha1
  3. bcrypt_sha256
  4. bcrypt
  5. sha1
  6. unsalted_md5
  7. crypt

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网