• Flask 学习25.passlib 对密码加密与验证 上海


    前言

    目前常见的不可逆加密算法有以下几种:

    • 一次MD5(使用率很高)
    • 将密码与一个随机串进行一次MD5
    • 两次MD5,使用一个随机字符串与密码的md5值再进行一次md5,使用很广泛
    • 其它加密

    环境准备

    先安装passlib

    pip install passlib
    

    passlib 库里面会用到2个方法

    • encrypt() - 生成新的值,返回密码哈希
    • verify() - 根据现有哈希验证密码.

    简单使用

    Passlib是Python 2和3的密码散列库,它提供了30多种密码散列算法的跨平台实现,以及管理现有密码散列的框架。
    它被设计用于广泛的任务,从验证/etc/shadow中的散列,到为多用户应用程序提供全强度密码散列。

    from passlib.hash import pbkdf2_sha256
    
    password = "yoyo"
    hash = pbkdf2_sha256.hash("yoyo")
    print(f"加密后:{hash}")
    

    我们多运行几次,发现每次得到的结果都不一样

    加密后:$pbkdf2-sha256$29000$yBljbE3JGSPknHOu1VqrtQ$YN4k3VHR.lK1eUMrbrILP2JbIq0MkBArGvgCamaqG2c
    加密后:$pbkdf2-sha256$29000$PkdIKcXYuxdizDkHIGQsRQ$XX5jghW9/Ez10fsIculxWX7PZ8A5upjx0cXs.2Wd7HE
    

    这样就会让别人很难破解出你的原始密码内容,在数据库我们就可以保存加密后的值。

    当用户传一个密码值过来的时候,可以用verify() 方法验证密码是否正确

    # 验证密码
    result1 = pbkdf2_sha256.verify("yoy1", hash)
    print(result1)
    result2 = pbkdf2_sha256.verify("yoyo", hash)
    print(result2)
    

    运行结果

    False
    True
    

    只有跟原始密码一样的时候,才会返回True。

    其它加密

    除了上面用到的pbkdf2_sha256 加密方式,它提供了30多种密码散列算法,使用方法都差不多,比如用sha256_crypt

    from passlib.hash import sha256_crypt
    
    password = "yoyo"
    hash = sha256_crypt.hash("yoyo")
    print(f"加密后:{hash}")
    
    # 验证密码
    result1 = sha256_crypt.verify("yoy1", hash)
    print(result1)
    result2 = sha256_crypt.verify("yoyo", hash)
    print(result2)
    

    运行结果

    加密后:$5$rounds=535000$BhJ3gP9aySdAmAdc$e5h9KJVtmmkhtT/W0RyoBsYrXChnC.aU7zLpaZV6X1B
    False
    True
    
  • 相关阅读:
    【板+背包】多重背包 HDU Coins
    【板+并查集判断连通性】并查集判断连通性
    【Dijstra堆优化】HDU 3986 Harry Potter and the Final Battle
    【区间筛】2017多校训练四 HDU6069 Counting Divisors
    【构造+DFS】2017多校训练三 HDU 6060 RXD and dividing
    【链表】2017多校训练三 HDU 6058 Kanade's sum
    【带权并查集】HDU 3047 Zjnu Stadium
    【优先级队列】 Holedox Eating
    ajax学习笔记3-jQuery实现ajax(大拇指向上)
    ajax学习笔记2-JSON形式返回(大拇指向上)
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/16639451.html
Copyright © 2020-2023  润新知