POST请求签名(V2版本) Signature形式 Base64(HmacSHA1(SecretAccessKey,Base64(PolicyJSON))) 签名步骤 第一步:创建utf8编码的policy 第二步:构造签名字符串,在POST V2签名中,StringToSign是policy的Base64编码字符串 第三步:计算签名Signature,生成最终的签名时需要使用SecretAccessKey对StringToSign进行签名,该签名的计算方式为 Base64(HmacSHA1(SecretAccessKey,StringToSign)) 生成POST V2签名参数代码示例 这里提供Python示例代码展示POST V2签名的计算过程: import base64 import hmac import hashlib import json def calculatesignature(stringtosign, secretkey): secretkeybytes bytes(secretkey, 'utf8') stringtosignbytes bytes(stringtosign, 'utf8') signature hmac.new(secretkeybytes, stringtosignbytes, hashlib.sha1).digest() return base64.b64encode(signature).decode('utf8') def main(): accesskey "访问密钥ID" secretkey "私有访问密钥" bucket "testbuck" key "testobj" 创建 policy policyjson { "expiration": "20241216T13:00:00.000Z", "conditions": [ {"bucket": bucket}, ["startswith", "$key", key] ] } 创建签名字符串 stringtosign base64.b64encode(json.dumps(policyjson).encode('utf8')).decode('utf8') 计算签名 signature calculatesignature(stringtosign, secretkey) print("key:", key) print("AWSAccessKeyId:", accesskey) print("policy:", stringtosign) print("signature:", signature) if name 'main': main() 输出的结果: key: testobj AWSAccessKeyId: 访问密钥ID policy: eyJleHBpcmF0aW9uIjogIjIwMjQtMTItMTRUMTM6MDA6MDAuMDAwWiIsICJjb25kaXRpb25zIjogW3siYnVja2V0IjogInRlc3RidWNrIn0sIFsic3RhcnRzLXdpdGgiLCAiJGtleSIsICJ0ZXN0b2JqIl1dfQ signature: X2g5gF2cW1wjejnF4DQoUXg1z2s