Amazon Product Advertising API に接続しています。リクエストに署名するには、HMAC-SHA256 ハッシュの生のバイナリ出力を base64 エンコードする必要があります。
hash_hmacの PHP ドキュメントでは、4 番目のパラメーターbool $raw_output
は、出力が生のバイナリ データ (true) であるか、小文字の hexits (false) であるかを制御します。私のプログラムは、そのパラメーターを true に設定するだけで PHP で動作します。
ただし、これをJavascriptに移植しようとしています。CryptoJS.HmacSHA256() 関数を使用してみましたが、小文字の hexits を返すようです。これをバイナリに変換するにはどうすればよいですか?
CryptoJS のドキュメントに従って次のことを試しましたが、両方の出力は同じです。
var hash = CryptoJS.HmacSHA256("hello", "key");
console.log(hash.toString());
console.log(hash.toString(CryptoJS.enc.Base64));