level 2
woloveweb
楼主
有谁能帮忙看看报错是什么原因吗,密钥我是在后台查看替换的。
<Error> <Code>SignatureDoesNotMatch</Code> <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message> <RequestId>60C2E6B499F00D3432E34547</RequestId> <HostId>imageyy.oss-cn-shanghai.aliyuncs.com</HostId> <OSSAccessKeyId>LTAI4G8TxfLUwfdrxFF7n2Rt</OSSAccessKeyId> <SignatureProvided>pFAs3yj0+w84SXITYBxugPLauro=</SignatureProvided> <StringToSign>PUT
text/plain; charset=utf-8Fri, 11 Jun 2021 04:29:33 GMT/</StringToSign> <StringToSignBytes>50 55 54 0A 0A 74 65 78 74 2F 70 6C 61 69 6E 3B 20 63 68 61 72 73 65 74 3D 75 74 66 2D 38 0A 46 72 69 2C 20 31 31 20 4A 75 6E 20 32 30 32 31 20 30 34 3A 32 39 3A 33 33 20 47 4D 54 0A 2F </StringToSignBytes></Error>
上面这段是报错的信息
-------------------------------------------------------------下面这段是原码-里面的密钥替换了,使用时用的阿里后台的密钥
importClass(javax.crypto.spec.SecretKeySpec);importClass(javax.crypto.Mac);importClass(java.lang.StringBuilder);importClass(java.lang.Integer);
var AccessKeySecret = "需要替换"var AccessKeyId = "需要替换"
var VERB = "PUT"var Content_MD5 = ""var Content_Type = ""var ossDate = new Date()var CanonicalizedOSSHeaders = ""var BucketName = 'imageyy'var ObjectName = 'uploadTest888888999999.txt'var CanonicalizedResource = "/" + BucketName + "/" + ObjectName
log("VERB=" + VERB)log("ossDate=" + ossDate)log("CanonicalizedResource=" + CanonicalizedResource)
var hamcsha1Result=hamcsha1(AccessKeySecret, VERB + "\n" + Content_MD5 + "\n" + Content_Type + "\n" + ossDate + "\n" + CanonicalizedOSSHeaders + CanonicalizedResource)
log('hamcsha1Result=') log(hamcsha1Result)var Signature = base64Encode(hamcsha1Result).trim()
log('Signature='+Signature + '666666=======');
var SignatureValue = "OSS " + AccessKeyId + ":" + Signature;
log("SignatureValue=" + SignatureValue + '666666=======');
var headers = { Host: "imageyy.oss-cn-shanghai.aliyuncs.com", Date: getGMT(), Authorization: SignatureValue};log(headers)
var options = { headers: headers, method: "PUT", contentType: "text/plain", body: "6666666666666666668888888888888888888888"};log(options)
url = "http://imageyy.oss-cn-beijing.aliyuncs.com"r = http.request(url, options);log(r.body.string())
function getGMT() { var r=new Date().toGMTString() return r}
// byte[] data, byte[] keyfunction hamcsha1(data, key) {
var data = java.lang.String(data); var key = java.lang.String(key);
data = data.getBytes(); key = key.getBytes();
signingKey = new SecretKeySpec(key, "HmacSHA1"); // SecretKeySpec mac = Mac.getInstance("HmacSHA1"); // Mac mac.init(signingKey); return mac.doFinal(data); // return byte2hex(mac.doFinal(data));}
//二行制转字符串 static String byte2hex(byte[] b)function byte2hex(b) { hs = new StringBuilder(); // StringBuilder var stmp; // String for (var n = 0; b != null && n < b.length; n++) { stmp = Integer.toHexString(b[n] & 0xff); if (new java.lang.String(stmp).length() == 1) hs.append("0"); hs.append(stmp); } return hs // return hs.toString().toUpperCase().getBytes();}
function base64Encode(r) { log('base64Encode r=' + r) var r = android.util.Base64.encodeToString(r, 0); return r}
2021年06月11日 04点06分
1
<Error> <Code>SignatureDoesNotMatch</Code> <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message> <RequestId>60C2E6B499F00D3432E34547</RequestId> <HostId>imageyy.oss-cn-shanghai.aliyuncs.com</HostId> <OSSAccessKeyId>LTAI4G8TxfLUwfdrxFF7n2Rt</OSSAccessKeyId> <SignatureProvided>pFAs3yj0+w84SXITYBxugPLauro=</SignatureProvided> <StringToSign>PUT
text/plain; charset=utf-8Fri, 11 Jun 2021 04:29:33 GMT/</StringToSign> <StringToSignBytes>50 55 54 0A 0A 74 65 78 74 2F 70 6C 61 69 6E 3B 20 63 68 61 72 73 65 74 3D 75 74 66 2D 38 0A 46 72 69 2C 20 31 31 20 4A 75 6E 20 32 30 32 31 20 30 34 3A 32 39 3A 33 33 20 47 4D 54 0A 2F </StringToSignBytes></Error>
上面这段是报错的信息
-------------------------------------------------------------下面这段是原码-里面的密钥替换了,使用时用的阿里后台的密钥
importClass(javax.crypto.spec.SecretKeySpec);importClass(javax.crypto.Mac);importClass(java.lang.StringBuilder);importClass(java.lang.Integer);
var AccessKeySecret = "需要替换"var AccessKeyId = "需要替换"
var VERB = "PUT"var Content_MD5 = ""var Content_Type = ""var ossDate = new Date()var CanonicalizedOSSHeaders = ""var BucketName = 'imageyy'var ObjectName = 'uploadTest888888999999.txt'var CanonicalizedResource = "/" + BucketName + "/" + ObjectName
log("VERB=" + VERB)log("ossDate=" + ossDate)log("CanonicalizedResource=" + CanonicalizedResource)
var hamcsha1Result=hamcsha1(AccessKeySecret, VERB + "\n" + Content_MD5 + "\n" + Content_Type + "\n" + ossDate + "\n" + CanonicalizedOSSHeaders + CanonicalizedResource)
log('hamcsha1Result=') log(hamcsha1Result)var Signature = base64Encode(hamcsha1Result).trim()
log('Signature='+Signature + '666666=======');
var SignatureValue = "OSS " + AccessKeyId + ":" + Signature;
log("SignatureValue=" + SignatureValue + '666666=======');
var headers = { Host: "imageyy.oss-cn-shanghai.aliyuncs.com", Date: getGMT(), Authorization: SignatureValue};log(headers)
var options = { headers: headers, method: "PUT", contentType: "text/plain", body: "6666666666666666668888888888888888888888"};log(options)
url = "http://imageyy.oss-cn-beijing.aliyuncs.com"r = http.request(url, options);log(r.body.string())
function getGMT() { var r=new Date().toGMTString() return r}
// byte[] data, byte[] keyfunction hamcsha1(data, key) {
var data = java.lang.String(data); var key = java.lang.String(key);
data = data.getBytes(); key = key.getBytes();
signingKey = new SecretKeySpec(key, "HmacSHA1"); // SecretKeySpec mac = Mac.getInstance("HmacSHA1"); // Mac mac.init(signingKey); return mac.doFinal(data); // return byte2hex(mac.doFinal(data));}
//二行制转字符串 static String byte2hex(byte[] b)function byte2hex(b) { hs = new StringBuilder(); // StringBuilder var stmp; // String for (var n = 0; b != null && n < b.length; n++) { stmp = Integer.toHexString(b[n] & 0xff); if (new java.lang.String(stmp).length() == 1) hs.append("0"); hs.append(stmp); } return hs // return hs.toString().toUpperCase().getBytes();}
function base64Encode(r) { log('base64Encode r=' + r) var r = android.util.Base64.encodeToString(r, 0); return r}