POST请求签名(V4版本) 生成POST V4签名参数代码示例 这里提供Python示例代码展示POST V4签名的计算过程: import hmac import hashlib import base64 import datetime import json def hmacsha256(key, data): return hmac.new(key, data.encode('utf8'), hashlib.sha256).digest() def computesignature(currentdate, region, service, secretkey, policystring): ksecret ('AWS4' + secretkey).encode('utf8') kdate hmacsha256(ksecret, currentdate) kregion hmacsha256(kdate, region) kservice hmacsha256(kregion, service) ksigning hmacsha256(kservice, 'aws4request') signature hmacsha256(ksigning, policystring) return bytestohex(signature) def bytestohex(bytedata): return ''.join(f'{byte:02x}' for byte in bytedata) def getdate(date): return date.strftime('%Y%m%d') def gettimestamp(date): return date.strftime('%Y%m%dT%H%M%SZ') def main(): accesskey "访问密钥ID" secretkey "私有访问密钥" bucket "testbuck" key "testobj" region "useast1" service "s3" algorithm "AWS4HMACSHA256" date datetime.datetime.utcnow() requestdate getdate(date) datestamp gettimestamp(date) credential f"{accesskey}/{requestdate}/{region}/{service}/aws4request" 构建 policy policyjson { "expiration": "20241216T13:00:00.000Z", "conditions": [ {"bucket": bucket}, {"xamzalgorithm": algorithm}, {"xamzcredential": credential}, {"xamzdate": datestamp}, ["startswith", "$key", key] ] } 创建签名字符串 stringtosign base64.b64encode(json.dumps(policyjson).encode('utf8')).decode('utf8') 计算签名 signature computesignature(requestdate, region, service, secretkey, stringtosign) print("policy:", stringtosign) print("xamzalgorithm:", algorithm) print("xamzcredential:", credential) print("xamzdate:", datestamp) print("xamzsignature:", signature) if name 'main': main() 输出的结果: policy: eyJleHBpcmF0aW9uIjogIjIwMjQtMTItMTZUMTM6MDA6MDAuMDAwWiIsICJjb25kaXRpb25zIjogW3siYnVja2V0IjogInRlc3RidWNrIn0sIHsieC1hbXotYWxnb3JpdGhtIjogIkFXUzQtSE1BQy1TSEEyNTYifSwgeyJ4LWFtei1jcmVkZW50aWFsIjogIlx1OGJiZlx1OTVlZVx1NWJjNlx1OTRhNUlELzIwMjQxMjE2L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSwgeyJ4LWFtei1kYXRlIjogIjIwMjQxMjE2VDAyMDIxMVoifSwgWyJzdGFydHMtd2l0aCIsICIka2V5IiwgInRlc3RvYmoiXV19 xamzalgorithm: AWS4HMACSHA256 xamzcredential: 访问密钥ID/20241216/useast1/s3/aws4request xamzdate: 20241216T020211Z xamzsignature: 65335e61c9c448fcc35283b12861f170f12f13ac03ef65037e44cb1f604048ca