赞
踩
JWT (JSON Web Token)通常用于对用户进行身份验证和授权,是一种无状态的认证机制,通过在用户和服务器之间传递加密的令牌来验证用户身份
JWT是由字符串构成的,分为三段文本信息
每一段都用base64编码,注:base64不是一种加密方式,而是编码方式
import json
import base64
userinfo = {'user': '张三', 'age': 18}
userinfo_str = json.dumps(userinfo)
# 编码成base64
res = base64.b64encode(userinfo_str.encode(encoding='utf-8'))
print(res)
# b'eyJ1c2VyIjogIlx1NWYyMFx1NGUwOSIsICJhZ2UiOiAxOH0='
# 将base64解码
res = base64.b64decode(res)
print(res)
# b'{"user": "\\u5f20\\u4e09", "age": 18}'
from datetime import datetime import json import base64 import hashlib class MyJWT: def __init__(self, header=None, payload=None, token=None): self.header = header self.payload = payload self.token = token def get_base64(self, info): return base64.b64encode((json.dumps(info)).encode(encoding='utf-8')) def get_md5(self, header, payload): md5 = hashlib.md5() md5.update(header) md5.update(payload) md5.update(b'7777') # 盐 return md5.hexdigest() def get_token(self, header, payload): base64_header = self.get_base64(header) base64_payload = self.get_base64(payload) token = f'{base64_header.decode(encoding="utf8")}.{base64_payload.decode(encoding="utf8")}.{self.get_md5(base64_header, base64_payload)}' return token def check_token(self, token): base64_header, base64_payload, sign = token.split('.') token = self.get_md5(base64_header.encode('utf8'), base64_payload.encode('utf8')) if sign == token: return True else: return False def Issuance(self): token = self.get_token(self.header, self.payload) return token def Validate(self, token): if self.check_token(token): return True else: return False headers = {'type': 'jwt', 'alg': 'md5'} userinfo = {'name': '张三', 'age': 18, 'time_field': str(datetime(2024, 1, 1, 12, 0)), 'time_expires': str( datetime(2024, 1, 2, 12, 0)), 'level': 1} jwt = MyJWT(header=headers, payload=userinfo) Token = jwt.Issuance() Token_validate = jwt.Validate(Token)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。