JWT加密解密
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | import time import jwt class Token( object ): def __init__( self ): pass @classmethod def encrpyt_token( cls , username, uuid, exptime = None , secret = None ): """ iss:该JWT的签发者,是否使用是可以选择的。 sub:该JWT所面向的用户,是否使用是可选的。 aud:接收该JWT的一方,是否使用是可选的。 exp(expires):什么时候过期,是一个UNIX的时间戳,是否使用是可选的。默认设置为:30分钟 iat(issued at):在什么时候签发UNIX时间,是否使用是可选的。 nbf(not before):如果当前时间在nbf的时间之前,则Token不被接受,一般都会留几分钟,是否使用是可选的。 :return: """ if not exptime: exptime = time.time() + 60 * 30 if not secret: secret = 'iam' payloads = { 'iss' : 'IAM JWT Builder' , 'iat' : time.time(), 'username' : username, 'uuid' : str (uuid), "exp" : exptime } encoded_jwt = jwt.encode(payloads, secret, algorithm = 'HS256' ).decode() return encoded_jwt @classmethod def decrypt_token( cls , token, secret = None ): try : if not secret: secret = 'iam' decode_jwt = jwt.decode(token, secret, algorithms = [ 'HS256' ]) return decode_jwt except jwt.exceptions.InvalidSignatureError as e: return { 'error' : '签名验证失败' } except jwt.exceptions.ExpiredSignatureError as e: return { 'error' : '签名过期' } if __name__ = = '__main__' : encrpyt_token = Token.encrpyt_token( 'lisi' , '123dasddas' ) print (encrpyt_token) decrypt_token = Token.decrypt_token( 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJJQU0gSldUIEJ1aWx' 'kZXIiLCJpYXQiOjE2Mzg0MTc5NTQuNjU3Nzk1MiwidXNlcm5hbWUiOiJsaXNpIiwidXVpZCI6IjEyM2Rhc2RkYXMiLCJleHA' 'iOjE2Mzg0MTk3NTQuNjU3Nzk1Mn0.lR0_Dv89iQ9fnWckog2AvHPIbITy39f0SEquye_CYNg' ) print (decrypt_token) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)