• django加密解密api


    分别给出了两个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就好

  • 相关阅读:
    汇编--立即数
    java mysql常用函数大全
    java springboot@GeneratedValue 注解
    java list.stream().map().collect(Collectors.toList())
    java 一种树的写法
    怎么查看当前进程?怎么执行退出?怎么查看当前路径?
    垃圾回收的优点和原理,并考虑2种回收机制?
    du 和 df 的定义,以及区别?
    通过什么命令查找执行命令?
    终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
  • 原文地址:https://www.cnblogs.com/CelonY/p/10169233.html
Copyright © 2020-2023  润新知