2017-10-05 3 views
0

Aus der folgenden Anleitung in AWS Ich brauche einen HMAC SHA256 Signatur zu generieren: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/rest-signature.htmlEncoding AWS Affiliate-API String mit PS gibt falschen Hash

Mein Code ist wie folgt:

$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=') 

Leider ich tun nicht den gleichen Hash wie AWS in seinem Beispiel. Was habe ich verpasst?

Antwort

0

Ich habe es schließlich. Es hatte etwas mit den Zeilenumbrüchen zu tun:

$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"