代码如下:

# -*- coding: utf-8 -*-

from passlib.apps import custom_app_context as pwd_context
import config
import MySQLdb,datetime
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired class QXPasswd(object):
def __init__(self, password):
self.password = password
def generate_password(self):
password_hash = pwd_context.encrypt(self.password)
return password_hash def verify_password(self, password_hash):
return pwd_context.verify(self.password, password_hash) class QXToken(object):
def __init__(self, name):
self.name = name def generate_auth_token(self, expiration = 3600):
s = Serializer(config.SECRET_KEY, expires_in = expiration)
return s.dumps({'name': self.name }) def verify_auth_token(self, token):
s = Serializer(config.SECRET_KEY)
try:
data = s.loads(token)
except SignatureExpired:
return None # valid token, but expired
except BadSignature:
return None # invalid token
return data['name'] == self.name #插入一条用户密码加密的数据
'''
conn = MySQLdb.connect(host="localhost", user="root", passwd="", db='qixin', port=3306, charset="utf8")
cursor = conn.cursor()
now = datetime.datetime.now()
currentTime = now.strftime("%Y-%m-%d %H:%M:%S")
sql = "insert into qx_user(username,password,addTime) values(%s, %s, %s)"
u = QXPasswd('123456') value = ['zl', u.generate_password(), currentTime]
cursor.execute(sql, value)
conn.commit()
''' #验证用户密码正确性
'''
conn = MySQLdb.connect(host="localhost", user="root", passwd="", db='qixin', port=3306, charset="utf8")
cursor = conn.cursor()
sql="select username, password from qx_user where username = 'zl'"
cursor.execute(sql)
row = cursor.fetchone()
u = QXPasswd('123456')
print u.verify_password(row[1])
''' #生成用户token
'''
token = QXToken('zl')
print token.generate_auth_token()
''' #验证token
token = QXToken('zl')
print token.verify_auth_token('eyJhbGciOiJIUzI1NiIsImV4cCI6MTQ2NDI1NzI4OCwiaWF0IjoxNDY0MjUzNjg4fQ.eyJuYW1lIjoiemwifQ.iVlCfzIk5YMXhlzO3lOqHBBtYTiJV3_ze8wUR80GWAc')

完毕。

python 数据加密以及生成token和token验证的更多相关文章

  1. python 产生token及token验证

    1.前言 最近在做微信公众号开发在进行网页授权时,微信需要用户自己在授权url中带上一个类似token的state的参数,以防止跨站攻击.在经过再三思考之后,自己试着实现一个产生token和验证tok ...

  2. springcloud +spring security多种验证方式之第三方token生成自己的token通过校验和自己的表单验证大体流程

    步骤: 1.继承 WebSecurityConfigurerAdapter.class,其中使用两个过滤器,一个spring scurity自带的UsernamePasswordAuthenticat ...

  3. Python用摘要算法生成token及检验token

    原创作者:希希大队长,blog:https://cnblogs.com/dongxixi/ # 基础版,不依赖环境 import time import base64 import hashlib c ...

  4. 基于Token的身份验证——JWT

    初次了解JWT,很基础,高手勿喷. 基于Token的身份验证用来替代传统的cookie+session身份验证方法中的session. JWT是啥? JWT就是一个字符串,经过加密处理与校验处理的字符 ...

  5. python 全栈开发,Day97(Token 认证的来龙去脉,DRF认证,DRF权限,DRF节流)

    昨日内容回顾 1. 五个葫芦娃和三行代码 APIView(views.View) 1. 封装了Django的request - request.query_params --> 取URL中的参数 ...

  6. WebApi_基于Token的身份验证——JWT

    JWT是啥? JWT就是一个字符串,经过加密处理与校验处理的字符串,形式为: A.B.C A由JWT头部信息header加密得到B由JWT用到的身份验证信息json数据加密得到C由A和B加密得到,是校 ...

  7. 基于Token的身份验证--JWT

    初次了解JWT,很基础,高手勿喷. 基于Token的身份验证用来替代传统的cookie+session身份验证方法中的session. JWT是啥? JWT就是一个字符串,经过加密处理与校验处理的字符 ...

  8. JavaWeb—基于Token的身份验证

    传统身份验证的方法 HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RES ...

  9. 基于Token的身份验证——JWT(转)

    本文转自:http://www.cnblogs.com/zjutzz/p/5790180.html 感谢作者 初次了解JWT,很基础,高手勿喷.基于Token的身份验证用来替代传统的cookie+se ...

随机推荐

  1. 实验十三_编写、应用中断例程_2 & 总结

    编写并安装int 7ch中断例程,功能为完成loop指令的功能 参数:(cx)= 循环次数,(bx)= 位移 以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察int.iret指令执行前后 ...

  2. __int64和long long输入输出

    __int64 num; scanf("%I64d", &num); printf("%I64d\n", num); long long num; sc ...

  3. A*啦啦啦

    ...A*是个啥都不知道.. 大家注意K短路可能不存在!!!! 果然是s==t的问题……加个if(s==t) k++就A了…… 单用Dij,tle到死 原来是单向k短路........开始以为是双向的 ...

  4. C# 多线程 lock 实例

    class Program { static void Main(string[] args) { //在t1线程中调用LockMe,并将deadlock设为true(将出现死锁) int i = 1 ...

  5. ASP.NET MVC(三)

    ASP.NET Routing 模块的责任是将传入的浏览器请求映射为特有的MVC controller actions. 请求 URL 当我们不使用路由的时候 请求 http://server/app ...

  6. 解决filezilla中无法显示中文的文件名

    设定字符集时选择自定义字符集, 然后输入字符集为 GBK

  7. php file_get_contents与curl性能比较

    1.fopen /file_get_contents 每次请求都会重新做DNS查询,并不对 DNS信息进行缓存.但是CURL会自动对DNS信息进行缓存.对同一域名下的网页或者图片的请求只需要一次DNS ...

  8. 《聚焦3D地形编程》学习点

    痞子龙的译本虽然称不上好,但却保留了原汁原味,看这本书时最好结合原文与痞子龙的译文.另外,如果有过地形生成的经验再看这本书时有些帮助,这本书介绍的专业的室外地形开发,很全面的介绍. 仅是个人总结,可能 ...

  9. Headless MSBuild Support for SSDT (*.sqlproj) Projects

    http://sqlproj.com/index.php/2012/03/headless-msbuild-support-for-ssdt-sqlproj-projects/ Update: bre ...

  10. linux设备驱动归纳总结(六):3.中断的上半部和下半部——tasklet【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-100005.html linux设备驱动归纳总结(六):3.中断的上半部和下半部——tasklet x ...