JWT签名详解,JAVA示例,点击->JWT详解

Python JWT对称签名

  1. import jwt
  2. class JwtToken(object):
  3. _salt = "gz"
  4. _expire_message = dict(code=1200, msg="token 已经失效")
  5. _unknown_error_message = dict(code=4200, msg="token 解析失败")
  6. @classmethod
  7. def generate_token(cls, payload: dict) -> str:
  8. headers = dict(typ="jwt", alg="HS256")
  9. resut = jwt.encode(payload=payload, key=cls._salt, algorithm="HS256", headers=headers)
  10. return resut
  11. @classmethod
  12. def parse_token(cls, token: str) -> tuple:
  13. verify_status = False
  14. try:
  15. payload_data = jwt.decode(token, cls._salt, algorithms=['HS256'])
  16. verify_status = True
  17. except jwt.ExpiredSignatureError:
  18. payload_data = cls._expire_message
  19. except Exception as _err:
  20. payload_data = cls._unknown_error_message
  21. return verify_status, payload_data
  22. jwt_token = JwtToken.generate_token({"user": "xiongfanyong"})
  23. print(jwt_token)
  24. print(JwtToken.parse_token(jwt_token))

Python JWT非对称签名

import test4 # 这个文件在https://www.yuque.com/gaotang-zubwc/mainshi/sc6wa4

  1. import jwt
  2. import test4
  3. class JwtToken(object):
  4. private_key = test4.get_private_key()
  5. public_key = test4.get_public_key()
  6. _expire_message = dict(code=1200, msg="token 已经失效")
  7. _unknown_error_message = dict(code=4200, msg="token 解析失败")
  8. @classmethod
  9. def generate_token(cls, payload: dict) -> str:
  10. headers = dict(typ="jwt", alg="RS256")
  11. resut = jwt.encode(payload=payload, key=cls.private_key.encode(), algorithm="RS256", headers=headers)
  12. return resut
  13. @classmethod
  14. def parse_token(cls, token: str) -> tuple:
  15. verify_status = False
  16. try:
  17. payload_data = jwt.decode(token, cls.public_key.encode(), algorithms=['RS256'])
  18. verify_status = True
  19. except jwt.ExpiredSignatureError:
  20. payload_data = cls._expire_message
  21. except Exception as _err:
  22. payload_data = cls._unknown_error_message
  23. return verify_status, payload_data
  24. jwt_token = JwtToken.generate_token({"user": "xiongfanyong"})
  25. print(jwt_token)
  26. print(JwtToken.parse_token(jwt_token))