2013-05-17 15 views
9

ja jechałem przez API Amazon Reklama wyrobów REST signature docs i utknąłem na # 8Oblicz RFC 2104 zgodnych HMAC z algorytmem SHA256 hash w Ruby

Oblicz RFC 2104 zgodnych HMAC z SHA256 algorytm mieszania używa powyższego ciągu z naszym "maniakiem" Tajny klucz dostępu: 1234567890. Aby uzyskać więcej informacji o tym kroku, zobacz dokumentację i przykłady kodu dla swojego języka programowania.

Nieważne, udało się uzyskać jeszcze jedną próbę przy pomocy Calculating a SHA hash with a string + secret key in python. Odpisze odpowiedź poniżej.

Odpowiedz

15

Poniższa tworzy prawidłowy podpis:

require 'openssl' 

secret_key = '1234567890' 
query = 'AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06' 
data = ['GET', 'ecs.amazonaws.com', '/onca/xml', query].join("\n") 
sha256 = OpenSSL::Digest::SHA256.new 
sig = OpenSSL::HMAC.digest(sha256, secret_key, data) 
signature = Base64.encode64(sig) 
+0

Oh Glob yr the best! – gr8scott06

+0

Adres URL serwisu webservices.amazon.com został zmieniony na ecs.amazonaws.com i należy go zaktualizować w celu wygenerowania prawidłowego podpisu. – OskarH

+0

@HippieBandJam Zakładam, że masz na myśli tylko adres URL, ale czy mógłbyś edytować moją odpowiedź? – AJcodez