我对于文档中的计算HMAC-SHA1部分有疑问
这部分代码如下(C/C++)
void AliSign(char *StringToSign, char *SignKey)
{
char opad[64], ipad[64];
sha1_context shactx;
uint8 middata[20]; int i;
memset(opad, 0, 64);
strcpy(opad, SignKey);
memset(ipad, 0, 64);
strcpy(ipad, SignKey);
for(i=0; i<64; i++)
opad[i] ^= 0x5C,
ipad[i] ^= 0x36;
sha1_starts(&shactx);
sha1_update(&shactx, (uint8*)ipad, 64);
sha1_update(&shactx, (uint8*)StringToSign,
strlen(StringToSign));
sha1_finish(&shactx, middata);
sha1_starts(&shactx);
sha1_update(&shactx, (uint8*)opad, 64);
sha1_update(&shactx, middata, 20);
sha1_finish(&shactx, middata);
base64_encode(middata, 20, StringToSign, 30);
}
API文档中给出如下示例
"GET&%2F&AccessKeyId%3Dtestid%26Action%3DDescribeDomainRecords%26Format%3Dxml%26DomainName%3Dexample.com%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D1324fd0e-e2bb-4bb1-917c-bd6e437f1710%26SignatureVersion%3D1.0%26TimeStamp%3D2014-08-15T11%253A10%253A07Z%26Version%3D2015-01-09"
密钥:testsecret&
加密结果:SmhZuLUnXmqxSEZ/GqyiwGqmf+M=
使用我自己的函数,加密结果为RExwPbJruipP6shxgJWNjhsXyzU=,
这个结果与其他在线hmac加密结果一致,但是与文档中给出的结果不符
这个网站是一个在线HMAC加密网站http://1024tools.com/hmac
其给出了Hex结果444c703db26bba2a4feac87180958d8e1b17cb35以base64格式编码即为RExwPbJruipP6shxgJWNjhsXyzU=
在实际运行中收到如下回复
<?xml version="1.0" encoding="UTF-8"?> <Error><RequestId>687820ED-F1DB-479C-97AB-AC8979A74CFF</RequestId><HostId>dns.aliyuncs.com</HostId><Code>SignatureDoesNotMatch</Code><Message>The signature we calculated does not match the one you provided. Please refer to the API reference about authentication for details.</Message><!--10.178.73.196--></Error>
我怀疑,API文档所介绍的签名方法有误
我遇到和你一样的问题,请问你的问题解决了吗?我测试的官方另一个关于签名的获取https://help.aliyun.com/document_detail/67699.html?spm=a2c4g.11186623.2.9.169290e1tWf31Y
也得出和你一样的结论,我们测试的网站也一样,不知是官方错了,还是是我们选的测试网站问题
调用云解析API,返回SignatureDoesNotMatch错误的帮助,你参考一下https://help.aliyun.com/knowledge_detail/6555951.html
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。