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

首先,引入模块:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
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就好

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄