def crc32(data): """计算输入流的crc32检验码: Args: data: 待计算校验码的字符流 Returns: 输入流的crc32校验码。 """ return binascii.crc32(b(data)) & 0xffffffff
def urlsafe_base64_encode(data): """urlsafe的base64编码: 对提供的数据进行urlsafe的base64编码。规格参考: https://developer.qiniu.com/kodo/manual/1231/appendix#1 Args: data: 待编码的数据,一般为字符串 Returns: 编码后的字符串 """ ret = urlsafe_b64encode(b(data)) return s(ret)
def etag_stream(input_stream): """计算输入流的etag: etag规格参考 https://developer.qiniu.com/kodo/manual/1231/appendix#3 Args: input_stream: 待计算etag的二进制流 Returns: 输入流的etag值 """ array = [_sha1(block) for block in _file_iter(input_stream, _BLOCK_SIZE)] if len(array) == 0: array = [_sha1(b'')] if len(array) == 1: data = array[0] prefix = b'\x16' else: sha1_str = b('').join(array) data = _sha1(sha1_str) prefix = b'\x96' return urlsafe_base64_encode(prefix + data)
def __token(self, data): data = b(data) hashed = hmac.new(self.__secret_key, data, sha1) return urlsafe_base64_encode(hashed.digest())
def __init__(self, access_key, secret_key): """初始化Auth类""" self.__checkKey(access_key, secret_key) self.__access_key = access_key self.__secret_key = b(secret_key)
def __init__(self, access_key, secret_key): self.qiniu_header_prefix = "X-Qiniu-" self.__checkKey(access_key, secret_key) self.__access_key = access_key self.__secret_key = b(secret_key)