• 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就好

  • 相关阅读:
    Activit 5.13 工作流部署新版本后回退到上一个版本
    一个java的http请求的封装工具类
    FastJSON使用例子
    SoapUI、Postman测试WebService
    PLSQL连接oracle数据库
    python函数修饰符@的使用
    QEMU KVM Libvirt手册(8): 半虚拟化设备virtio
    QEMU KVM Libvirt手册(7): 硬件虚拟化
    多个router和多个network
    nova file injection的原理和调试过程
  • 原文地址:https://www.cnblogs.com/yangxiaolan/p/5988132.html
Copyright © 2020-2023  润新知