# -*- coding: utf-8 -*- import hashlib # 待加密内容 # strdata = "xiaojingjiaaseafe16516506ng" # # h1 = hashlib.md5() # h1.update(strdata.encode(encoding='utf-8')) # # strdata_tomd5 = h1.hexdigest() # # print("原始内容:", strdata, ",加密后:", strdata_tomd5) import time import base64 class base64Object: # 生产token def generate_token(key, expire=300): ''' @Args: key: str (用户给定的key,需要用户保存以便之后验证token,每次产生token时的key 都可以是同一个key) expire: int(最大有效时间,单位为s) @Return: state: str ''' ts_str = str(time.time() + expire) token = ts_str + ':' + key b64_token = base64.urlsafe_b64encode(token.encode("utf-8")) return b64_token.decode("utf-8") # 解密token def get_certify_token(token): ''' @Args: key: str token: str @Returns: boolean ''' token_str = base64.urlsafe_b64decode(token).decode('utf-8') token_list = token_str.split(':') if len(token_list) != 2: return '长度不对' known_sha1_tsstr = token_list[1] return known_sha1_tsstr # 验证token def certify_token(key, token): ''' @Args: key: str token: str @Returns: boolean ''' token_str = base64.urlsafe_b64decode(token).decode('utf-8') token_list = token_str.split(':') if len(token_list) != 2: return False ts_str = token_list[0] print (float(ts_str)) print (time.time()) print (float(ts_str) < time.time()) if float(ts_str) < time.time(): # token expired return False known_sha1_tsstr = token_list[1] print (66666666666666) print (known_sha1_tsstr != key) if known_sha1_tsstr != key: # token certification failed return False # token certification success return True # # key = "xiaojingjing" # print("key:", key) # user_token = generate_token(key=key) # # print("加密后:", user_token) # user_de = certify_token(key=key, token=user_token) # print("验证结果:", user_de) # # key = "xiaoqingqing" # user_de = certify_token(key=key, token=user_token) # print("验证结果:",user_de)