Python-Flask-加密-token
-
数据加密-sha1
import hashlib pwd='a123456' temp=hashlib.sha1(pwd.encode()) print(temp.hexdigest())
-
hash加盐加密
-
导入加密函数
from werkzeug.security import generate_password_hash,check_password_hash
-
密码生成函数:generate_password_hash
werkzeug.security.generate_password_hash(password, method='pbkdf2:sha1:2000', salt_length=8)
参数说明:
* password:明文密码 * method:哈希加密的方法(需要hashlib库支持的),格式为pdpdf2:<method>[:iterations] * method:哈希的方式,一般为SHA1 * iterations:(可选参数)迭代次数,默认为1000 * salt_length:盐值的长度,默认为8
加密之后的字符串格式:
method$salt$hash
-
密码验证函数:check_password_hash
函数定义:werkzeug.security.check_password_hash(pwhash, password)
参数定义:
pwhash:generate_password_hash生成的哈希字符串
password:需要验证的明文密码check_password_hash函数用于验证经过generate_password_hash哈希的密码 。若密码匹配,则返回真,否则返回假。
-
-
token(jwt)
现在很多框架都实现前后端分离,主要为了适应以下几个目的:
1,前后端的分离,可以使前端开发和后端开发更加分工明确,而不是后端还需要在视图模板中加入很多{% XXXX %}标签
2,是为了适应跨域调用或者多客户端调用,如你的手机应用调用某个接口,大都是调用第三方api等
所以在整合JWT,让框架具有更多的适应性。JWT 说简单就是基于token的权限验证;flask 有提供json的支持,可是对象转化是一个大问题;
-
什么是token
Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也