ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Flask 学习-25.passlib 对密码加密与验证

2022-08-30 15:30:23  阅读:225  来源: 互联网

标签:25 hash passlib Flask pbkdf2 密码 yoyo 加密 sha256


前言

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

  • 一次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

标签:25,hash,passlib,Flask,pbkdf2,密码,yoyo,加密,sha256
来源: https://www.cnblogs.com/yoyoketang/p/16639451.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有