7

Google Apps ScriptでHMAC署名を計算しようとしていますが、パラメータを渡す方法がドキュメントで100%明確になっておらず、期待どおりの出力を得ることができませんでした。


正しい出力が得られているかどうかを判断するために、結果を既知の正常なPHPコードと比較しています。そのコードは次のとおりです。

$key = "a2V5"; # this is "key" base64-encoded
$value = "test";
$result = base64_encode(hash_hmac('sha512', $value, base64_decode($key), true));

GoogleAppsScriptの私のコードは次のとおりです。

key = "a2V5"; // this is "key" base64-encoded
value = "test";
result = Utilities.base64Encode(Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, value, Utilities.base64Decode(key)));

私が受け取ることを期待した出力は次のとおりです。

KHoPuJp/vfpbVThjaRjlN6W4MGXk/zMSaLeqoRXd4EepsPT7W4KGCPwLYyfxAFX3Y3sFjp4Nu55piQGj5t1GHA==

しかし、代わりに私が得たのは:

mGXJ3X/nH5ZIFUAPtf1PsViY50pD3cfU7J8w2KAIEAqrAgZ3dpKcuy5V1yvH4/C5n1C9rFFsKc2JKHTwUqPscQ==

私はここで何を台無しにしましたか?

4

1 に答える 1

7

私はあなたのコードをレビューしました、そして私の目を引いたことが1つあります:

Utilities.base64Decode(key)メソッドreturnsByte[] Utilities.computeHmacSignature(macAlgorithm, value, key)は3つのパラメーターを受け入れます。valueおよびkeyタイプstringです。

多分これが問題です。次のようなことを試して、結果を確認してみませんか。

key = "a2V5"; // this is "key" base64-encoded
clearKey = "key";
value = "test";
result = Utilities.base64Encode(Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, value, clearKey));

ここでGoogleAppsScriptを確認します。

于 2012-12-22T22:40:03.523 に答える