Flask 学习-25.passlib 对密码加密与验证
2023-06-13 09:12:01 时间
前言
目前常见的不可逆加密算法有以下几种:
- 一次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
2022年第 12期《python接口web自动化+测试开发》课程,9月17号开学!
本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00
报名费:报名费3000一人(周期3个月)
联系微信/QQ:283340479
相关文章
- git配置用户名和邮箱密钥_git配置全局用户名和密码
- VMware ESXi 密码复杂度修改
- 修改MySQL密码的四种方法总结(适合初学者!)
- Ubuntu中安装MySQL更改默认密码的步骤详解
- Oracle密码策略修改:安全保障之道(oracle修改密码策略)
- 修改Linux系统密码:一步一步(linux如何更改密码)
- 安全保证:Linux 密码哈希算法(linux密码hash)
- Linux下查看账户密码简易操作(linux查看账户密码)
- Oracle数据库密码修改指南(oracle数据库密码修改)
- 系统MySQL本地密码系统:安全保障来袭(mysql本地密码)
- MySQL加密技术:保护你的数据安全(mysql加密码)
- 如何重设Su Oracle的密码(suoracle密码)
- Redis实现安全用户密码设置(redis 设置用户密码)
- 重新设置密码授权用Redis实现(redis设置密码授权)