base64Object.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # -*- coding: utf-8 -*-
  2. import hashlib
  3. # 待加密内容
  4. # strdata = "xiaojingjiaaseafe16516506ng"
  5. #
  6. # h1 = hashlib.md5()
  7. # h1.update(strdata.encode(encoding='utf-8'))
  8. #
  9. # strdata_tomd5 = h1.hexdigest()
  10. #
  11. # print("原始内容:", strdata, ",加密后:", strdata_tomd5)
  12. import time
  13. import base64
  14. class base64Object:
  15. # 生产token
  16. def generate_token(key, expire=300):
  17. '''
  18. @Args:
  19. key: str (用户给定的key,需要用户保存以便之后验证token,每次产生token时的key 都可以是同一个key)
  20. expire: int(最大有效时间,单位为s)
  21. @Return:
  22. state: str
  23. '''
  24. ts_str = str(time.time() + expire)
  25. token = ts_str + ':' + key
  26. b64_token = base64.urlsafe_b64encode(token.encode("utf-8"))
  27. return b64_token.decode("utf-8")
  28. # 解密token
  29. def get_certify_token(token):
  30. '''
  31. @Args:
  32. key: str
  33. token: str
  34. @Returns:
  35. boolean
  36. '''
  37. token_str = base64.urlsafe_b64decode(token).decode('utf-8')
  38. token_list = token_str.split(':')
  39. if len(token_list) != 2:
  40. return '长度不对'
  41. known_sha1_tsstr = token_list[1]
  42. return known_sha1_tsstr
  43. # 验证token
  44. def certify_token(key, token):
  45. '''
  46. @Args:
  47. key: str
  48. token: str
  49. @Returns:
  50. boolean
  51. '''
  52. token_str = base64.urlsafe_b64decode(token).decode('utf-8')
  53. token_list = token_str.split(':')
  54. if len(token_list) != 2:
  55. return False
  56. ts_str = token_list[0]
  57. print (float(ts_str))
  58. print (time.time())
  59. print (float(ts_str) < time.time())
  60. if float(ts_str) < time.time():
  61. # token expired
  62. return False
  63. known_sha1_tsstr = token_list[1]
  64. print (66666666666666)
  65. print (known_sha1_tsstr != key)
  66. if known_sha1_tsstr != key:
  67. # token certification failed
  68. return False
  69. # token certification success
  70. return True
  71. #
  72. # key = "xiaojingjing"
  73. # print("key:", key)
  74. # user_token = generate_token(key=key)
  75. #
  76. # print("加密后:", user_token)
  77. # user_de = certify_token(key=key, token=user_token)
  78. # print("验证结果:", user_de)
  79. #
  80. # key = "xiaoqingqing"
  81. # user_de = certify_token(key=key, token=user_token)
  82. # print("验证结果:",user_de)