JWT签名详解,JAVA示例,点击->JWT详解
Python JWT对称签名
import jwt
class JwtToken(object):
_salt = "gz"
_expire_message = dict(code=1200, msg="token 已经失效")
_unknown_error_message = dict(code=4200, msg="token 解析失败")
@classmethod
def generate_token(cls, payload: dict) -> str:
headers = dict(typ="jwt", alg="HS256")
resut = jwt.encode(payload=payload, key=cls._salt, algorithm="HS256", headers=headers)
return resut
@classmethod
def parse_token(cls, token: str) -> tuple:
verify_status = False
try:
payload_data = jwt.decode(token, cls._salt, algorithms=['HS256'])
verify_status = True
except jwt.ExpiredSignatureError:
payload_data = cls._expire_message
except Exception as _err:
payload_data = cls._unknown_error_message
return verify_status, payload_data
jwt_token = JwtToken.generate_token({"user": "xiongfanyong"})
print(jwt_token)
print(JwtToken.parse_token(jwt_token))
Python JWT非对称签名
import test4 # 这个文件在https://www.yuque.com/gaotang-zubwc/mainshi/sc6wa4
import jwt
import test4
class JwtToken(object):
private_key = test4.get_private_key()
public_key = test4.get_public_key()
_expire_message = dict(code=1200, msg="token 已经失效")
_unknown_error_message = dict(code=4200, msg="token 解析失败")
@classmethod
def generate_token(cls, payload: dict) -> str:
headers = dict(typ="jwt", alg="RS256")
resut = jwt.encode(payload=payload, key=cls.private_key.encode(), algorithm="RS256", headers=headers)
return resut
@classmethod
def parse_token(cls, token: str) -> tuple:
verify_status = False
try:
payload_data = jwt.decode(token, cls.public_key.encode(), algorithms=['RS256'])
verify_status = True
except jwt.ExpiredSignatureError:
payload_data = cls._expire_message
except Exception as _err:
payload_data = cls._unknown_error_message
return verify_status, payload_data
jwt_token = JwtToken.generate_token({"user": "xiongfanyong"})
print(jwt_token)
print(JwtToken.parse_token(jwt_token))