我下面這個例子無法使用HMAC SHA256再現來自例如AWS簽名
http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
,並試圖重現爲他們國家作爲簽名的64個字符串......
aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404
我已成功將Canonical Request的十六進制值與匹配的字符串進行匹配,並肯定StringToSign字符串是正確的。
最後一塊是計算簽名和簽名。這是我使用的紅寶石提供的功能擊中路障「getSignatureKey」
http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-ruby
signing_key = getSignatureKey secret_access_key, current_date, region, aws_service
signature = OpenSSL::HMAC.digest('sha256', signing_key, string_to_sign)
def getSignatureKey key, dateStamp, regionName, serviceName
kDate = OpenSSL::HMAC.digest('sha256', "AWS4" + key, dateStamp)
kRegion = OpenSSL::HMAC.digest('sha256', kDate, regionName)
kService = OpenSSL::HMAC.digest('sha256', kRegion, serviceName)
kSigning = OpenSSL::HMAC.digest('sha256', kService, "aws4_request")
kSigning
end
電流輸出爲「簽名」是這個奇怪的字符序列。
ٻ。H53ê} WQ
缺少什麼我拿到簽名等於...
aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404
它已關閉,但存在三個缺少零的實例。我在下面的十六進制中放了一個X來演示。我想知道爲什麼零不見了? aeeed9bbccd4d02ee5c0109b86d86835f99533Xda4c265957d157751f6X4d4X4 vs –
我看,這是很容易解決的,將更新我的回答 –