基于flask的在线笔记共享管理系统【10】(密码加密passlib)

基于flask的在线笔记共享管理系统【10】(密码加密passlib)

在用户注册时,将数据存入数据库,但是为了保证数据的保密性,使得用户密码对于数据库管理员也不可见需要对密码进行加密再存入数据库 。passlib是python 2&3的密码散列库
它提供 超过30种密码散列算法的跨平台实现,以及 作为管理现有密码哈希的框架。它被设计成有用的 对于范围广泛的任务,从验证/etc/shadow中找到的散列到 为多用户应用程序提供全强度密码哈希。
大家可以参考一下官方参考文档https://passlib.readthedocs.io/en/stable/
在这里插入图片描述

库的安装 使用pip安装

pip install passlib

在这里插入图片描述
版本说明
Passlib需要Python 2(> = 2.6)或Python 3(> = 3.3)

使用说明
这里只强调如何使用这个库进行加密,关于加密的原理不做详细解释

首先看一下本项目中的案例。在主入口文件中manage.py中。
使用下面语句导入函数库

from passlib.hash import sha256_crypt

在这里插入图片描述

这里只涉及到用户的注册和用户的登录两部分,下面代码为节选,详细代码我已经上传了源码到我的 资源里。大家可以参考参考。
在这里插入图片描述
在这里插入图片描述
用户注册成功以后,数据会被存入数据库。密码部分已经加密
在这里插入图片描述
用户登录的时候需要输入密码验证身份,代码如下,只需要通过库里的函数进行验证即可。
在这里插入图片描述
这里对密码验证,如果验证的俩个密码一致,返回1,否则返回0

上面的是本次实验对于数据加密部分的应用。用到了passlib库中的俩个函数

sha256_crypt.encrypt(str(form.password.data)) 
sha256_crypt.verify(password_candidate, password)

这里对这俩各函数做一些说明

sha256_crypt密码哈希算法,遵循PasswordHash API
https://passlib.readthedocs.io/en/stable/lib/passlib.ifc.html#password-hash-api

对于一般的应用程序的开发,我们需要用到 PasswordHash.hash() 【PasswordHash.encrypt()】生成新的哈希值,以及PasswordHash.verify() 根据现有的哈希值检查密码俩种方法。

PasswordHash.hash(秘码,**kwds )
这里有俩个参数,
第一个参数是需要进行加密的密码字符串,注意这里的数据类型是字符串而不是int型数据
第二个参数可以缺省,后续版本对其进行了改进,我们的一般编程用不到。想了解的同学可以参考上面的参考文档。

返回值,该函数返回一个哈希加密过的字符串

这里的新版本对其进行了改名PasswordHash.encrypt(秘密,**kwds )也就是我们实例中用到的函数
PasswordHash.verify( secret , hash , **context_kwds ) 
使用现有哈希验证密钥。这会检查一个秘密是否与存储在指定哈希中的秘密匹配

第一个参数是需要检查的字符串
第二个参数是一个哈希序列。即已经被加密过的字符串
第三个参数是额外的,可以缺省,多数情况下用不到。

返回值: 该函数是一个判断函数,如果来个密码一致,返回true,否则返回false。
基于 Flask在线笔记共享管理系统可以实现用户注册、登录、创建笔记、编辑笔记、分享笔记等功能。以下是一个简单的示例: 1. 安装 Flask 和相关依赖: ```shell pip install Flask ``` 2. 创建一个 Flask 应用并设置路由: ```python from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///notes.db' db = SQLAlchemy(app) @app.route('/') def index(): # 显示所有笔记列表 notes = Note.query.all() return render_template('index.html', notes=notes) # 其他路由和功能实现略... if __name__ == '__main__': app.run() ``` 3. 创建一个笔记模型: ```python class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(50), nullable=False) content = db.Column(db.Text, nullable=False) def __repr__(self): return self.title ``` 4. 创建数据库表: ```shell flask db init flask db migrate flask db upgrade ``` 5. 创建 HTML 模板文件,例如 `index.html`: ```html <!DOCTYPE html> <html> <head> <title>Online Note Sharing System</title> </head> <body> <h1>Notes</h1> <ul> {% for note in notes %} <li>{{ note.title }}</li> {% endfor %} </ul> </body> </html> ``` 以上是一个简单的基于 Flask在线笔记共享管理系统的示例,您可以根据需求进一步完善和扩展功能。注意,这只是一个简单的示例,实际开发中还需要考虑用户认证、权限管理、笔记编辑等复杂的功能和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBoy@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值