Wie erhalte ich HMAC SHA1-Hash und Base64-Kodierung in AppScript?

Wie erhalte ich HMAC SHA1-Hash und Base64-Kodierung in AppScript?

Ich habe derzeit einen kleinen Codeabschnitt, um eine Autorisierungszeichenfolge in R Studio abzurufen. Ich versuche, dieselbe Funktion in App Script zu replizieren, konnte jedoch nicht dasselbe Ergebnis erzielen.

Der Code in R Studio lautet:

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="

Der Code, den ich in AppScript verwende, ist inzwischen:

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="

Wie Sie sehen, erziele ich nicht die gleichen Ergebnisse.

Ich vermute, dass es eine Funktion gibt, die ich für den Hash verwenden sollte, damit ich ein „rohes“ Ergebnis erhalte, aber ich kenne sie nicht und konnte sie nicht finden.

Ich wäre dankbar, wenn mir jemand den richtigen Weg weisen könnte.

Antwort1

Entsprechenddie Dokumentation, die HMAC-Funktion in AppScript nimmt Parameter andersherum an – Nachricht vor Schlüssel.

$ 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='

verwandte Informationen