django加密解密api
2018-12-24 09:07:55来源:博客园 阅读 ()
分别给出了两个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第三个参数是表示生成密文的一种方式,根据文档给出的大概有这几种:
- pbkdf2_sha256
- pbkdf2_sha1
- bcrypt_sha256
- bcrypt
- sha1
- unsalted_md5
- crypt
以上例子我使用了第一种加密方式pbkdf2_sha256
,crypt
和bcrypt
都需要另外单独安装模块,unsalted_md5
就是常见的md5加密,如果对加密哈希算法不是很了解,那么就使用django
最新的哈希算法pbkdf2_sha256
就好
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- Django和前端用ajax传输json等数据 2019-08-13
- Django基本知识 2019-08-13
- JavaScript获取Django模板中指定键值的数据,使用过滤器 2019-08-13
- django框架使用及创建项目 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash