AmazonのAPIでHMACSHA256が必要になる件

AmazonAPIを使う場合に認証コードが必要になる件だけど、HMACSHA256だからPHPだとこうだね。

<?php
$data = 'GET
webservices.amazon.com
/onca/xml
AWSAccessKeyId=00000000000000000000&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06';

$secret_key = '1234567890';

$hash = hash_hmac('sha256', $data, $secret_key, true);

var_dump(base64_encode($hash));
// string(44) "Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg="

PHP 5.1.2から標準で使えるhash_hmac関数があるおかげで簡単。