2017-10-05 52 views
0

從AWS以下指南我需要生成一個HMAC SHA256簽名: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/rest-signature.html與PS編碼AWS加盟API字符串給出錯誤的哈希

我的代碼如下:

$message = 'GET 
webservices.amazon.com 
/onca/xml 
AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&AssociateTag=mytag-20&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=Images%2CItemAttributes%2COffers%2CReviews&Service=AWSECommerceService&Timestamp=2014-08-18T12%3A00%3A00Z&Version=2013-08-01' 

$secret = '1234567890' 

$hmacsha = New-Object System.Security.Cryptography.HMACSHA256 
$hmacsha.key = [Text.Encoding]::ASCII.GetBytes($secret) 
$signature = $hmacsha.ComputeHash([Text.Encoding]::ASCII.GetBytes($message)) 
$signature = [Convert]::ToBase64String($signature) 

echo $signature 

# Do we get the expected signature? 
echo ($signature -eq 'j7bZM0LXZ9eXeZruTqWm2DIvDYVUU3wxPPpp+iXxzQc=') 

不幸的是我沒有像AWS那樣獲得相同的散列值。我錯過了什麼?

回答

0

我終於明白了。 它與換行符有關:

$message = "GET`nwebservices.amazon.com`n/onca/xml`nAWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&AssociateTag=mytag-20&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=Images%2CItemAttributes%2COffers%2CReviews&Service=AWSECommerceService&Timestamp=2014-08-18T12%3A00%3A00Z&Version=2013-08-01"