python 数据加密以及生成token和token验证
2016-05-30 18:03
651 查看
代码如下:
完毕。
# -*- 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入门:字符串处理
- Python操作MySQL数据库
- windows下安装bpython
- python 常用模块 Top200
- python编码
- 使用Python写一个小小的项目监控
- python3深入学习教程
- 深入理解python中的浅拷贝和深拷贝
- Python爬虫学习系列
- python基础之异常处理
- 关于Python中面向对象
- Python使用struct处理二进制--pack,unpack
- Machine Learning in Action 学习笔记-(1)
- Python2与Python3的区别(三):print
- 解决Python中使用mysqldb的一些问题
- 浅谈Python的文件类型
- python字符串和编码
- python的metaclass
- swig-python
- 请实现一个函数能够计算一段文本中每个单词出现的次数。