Flask-用户管理

引用:

第 8 章:用户认证 - Flask 入门教程

安全存储密码

把密码明文存储在数据库中是极其危险的,假如攻击者窃取了你的数据库,那么用户的账号和密码就会被直接泄露。更保险的方式是对每个密码进行计算生成独一无二的密码散列值,这样即使攻击者拿到了散列值,也几乎无法逆向获取到密码。

Flask 的依赖 Werkzeug 内置了用于生成和验证密码散列值的函数,werkzeug.security.generate_password_hash() 用来为给定的密码生成密码散列值,而 werkzeug.security.check_password_hash() 则用来检查给定的散列值和密码是否对应。使用示例如下所示:

from werkzeug.security import generate_password_hash,check_password_hash

import unittest


class MyTest(unittest.TestCase):


    def test_password(self):
        password = 'my_password_123'

        p_hash_1 = generate_password_hash(password)
        print("p_hash_1: ", p_hash_1)

        p_hash_2 = generate_password_hash(password)
        print("p_hash_2: ", p_hash_2)

        print("password 与 p_hash_1 是否相等: ",check_password_hash(p_hash_1, password))
        print("password 与 p_hash_2 是否相等: ",check_password_hash(p_hash_2, password))


'''
p_hash_1:  pbkdf2:sha256:260000$MhRcKnKgUDUUclp6$3906c09a8476c5c82f5442e8fed4ac2c0ba1027b13dd1621ca8fc0e876ad3f52


p_hash_2:  pbkdf2:sha256:260000$2mQbaSTwXxSFg1FT$c653be4b90d8f32340ae8e3975bb29d18f77b38915e93c7f0be94c0acc76f9be


password 与 p_hash_1 是否相等:  True

password 与 p_hash_2 是否相等:  True
'''

同一密码每次生成散列值不同, 但是根据算法还是可以判断出是否与原密码相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值