如何在 AppScript 中取得 HMAC SHA1 雜湊和 Base64 編碼?

如何在 AppScript 中取得 HMAC SHA1 雜湊和 Base64 編碼?

我目前有一小段程式碼可以在 R Studio 中取得授權字串。我試圖在應用程式腳本中複製相同的功能,但無法獲得相同的結果。

R Studio中的程式碼是:

library(digest)
library(openssl)

sec_key <- "secret-key"
checksum_string <- "checksum-string"
checksum <- base64_encode(hmac(sec_key, checksum_string, algo = "sha1", raw = T))

Result after hash: 32 e1 f7 da c6 5b 16 fe 02 5b 90 f9 98 65 2b 2c 2e 22 c9 ad
Result after base64 encode: "MuH32sZbFv4CW5D5mGUrLC4iya0="

同時,我在 AppScript 中使用的程式碼是:

function get_checksum{
   var sec_key = "secret-key"
   var checksum_string = "checksum-string"
   var hash = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_1, sec_key, checksum_string)
   var checksum = Utilities.base64Encode(hash)
}
Result after hash: [107.0, -81.0, -127.0, -126.0, -93.0, 108.0, 110.0, -26.0, -29.0, 70.0, -90.0, -44.0, -100.0, -107.0, 25.0, 54.0, 86.0, 22.0, -82.0, -97.0]
Result after base64 encoding: "a6+BgqNsbubjRqbUnJUZNlYWrp8="

正如你所看到的,我沒有得到相同的結果。

我猜測有一個函數應該用於哈希,以便我可以獲得“原始”結果,但我不知道它並且無法找到它。

如果有人能指出我正確的方向,我將不勝感激。

答案1

根據文件,AppScript 中的 HMAC 函數以相反的方式取得參數 – 訊息先於金鑰。

$ python3
>>> import hmac, base64
>>> HMAC = lambda key, msg: base64.b64encode(hmac.HMAC(key, msg, 'sha1').digest())
>>> HMAC(key=b'secret-key', msg=b'checksum-string')
b'MuH32sZbFv4CW5D5mGUrLC4iya0='
>>> HMAC(key=b'checksum-string', msg=b'secret-key')
b'a6+BgqNsbubjRqbUnJUZNlYWrp8='

相關內容