import base64 import hmac from hashlib import sha1 PUBLIC_KEY = 您的公钥 PRIVATE_KEY = 您的私钥 class Authroizator: json_data = {} def __init__(self, json_data): self.json_data = json_data print("[json_data]:%s" % self.json_data) def calculateAuthSignature(self): check = self.__checkAuthRequiredParams() if not check[0]: return check[1] method = self.json_data.get('method') bucket = self.json_data.get('bucket') content_type = self.json_data.get('content_type') if content_type is None: content_type = '' content_md5 = self.json_data.get('content_md5') if content_md5 is None: content_md5 = '' date = self.json_data.get('date') if date is None: date = '' key = self.json_data.get('key') if key is None: key = '' content = method + '\n' + content_md5 + '\n' + content_type + '\n' + date + '\n' content += '/' + bucket + '/' + key signature = self.__signature(content) return 'UCloud ' + PUBLIC_KEY + ':' + signature def calculatePrivateUrlAuthroization(self): check = self.__checkPrivateUrlAuthRequiredParams() if not check[0]: return check[1] method = self.json_data.get('method') bucket = self.json_data.get('bucket') key = self.json_data.get('key') expires = str(self.json_data.get('expires')) content = method + '\n\n\n' + expires + '\n' content += '/' + bucket + '/' + key return self.__signature(content) def __checkAuthRequiredParams(self): if self.json_data is None: return False, "Request body json is null" method = self.json_data.get('method') if method is None or method == '': return False, "'method' is required!" bucket = self.json_data.get('bucket') if bucket is None or bucket == '': return False, "'bucket' is required!" return True, '' def __checkPrivateUrlAuthRequiredParams(self): if self.json_data is None: return False, "Request body json is null" method = self.json_data.get('method') if method is None or method == '': return False, "'method' is required!" bucket = self.json_data.get('bucket') if bucket is None or bucket == '': return False, "'bucket' is required!" key = self.json_data.get('key') if key is None or key == '': return False, "'key' is required!" expires = self.json_data.get('expires') if expires is None or str(expires) == '': return False, "'expires' is required!" return True, '' def __signature(self, content): print(content) hmac_res = hmac.new(PRIVATE_KEY.encode(), content.encode(), sha1).digest() return base64.standard_b64encode(hmac_res).decode('utf-8')