Wie man Hex-Wert von computeHmacSha256Signature Methode von Google Apps Script?

Lese ich die Lösung für MD5 unten, aber ich konnte nicht ganz kapiert.

wieder eine string-Darstellung von computeDigest(Algorithmus, Wert) byte[]

Ich würde gerne zum erstellen von API-Signatur mit HMAC-SHA256-hash.

var date = new Date();
var nonce = Math.floor(date.getTime()/1000);
var url = "https://mysweet.com/api/accounts"
var secret = "my_secret";
var signature = Utilities.computeHmacSha256Signature(nonce+url, secret);

aber es gibt byte-array [42, -8, -47, -21, ..], und es kann nicht verwendet werden, da API-Signatur direkt.
Gibt es einen einfachen Weg, um einen Hex-Wert von der Methode? oder Umwandlung?

InformationsquelleAutor M_Igashi | 2016-12-19



2 Replies
  1. 8

    Wandte ich die Methode Sie verknüpft und erhalten:

    var sig = signature.reduce(function(str,chr){
      chr = (chr < 0 ? chr + 256 : chr).toString(16);
      return str + (chr.length==1?'0':'') + chr;
    },'');;

    Hier ist also ein test-Funktion:

    function testSig() {
      var date = new Date();
      var message = "Violets are red";
      var secret = "my_secret";
      var signature = Utilities.computeHmacSha256Signature(message, secret);
      var sig = signature.reduce(function(str,chr){
        chr = (chr < 0 ? chr + 256 : chr).toString(16);
        return str + (chr.length==1?'0':'') + chr;
      },'');
      Logger.log(sig); //fe70fa2e74b3ee0d67aa3c1d5c2844e558fea6802e8cfa58e5d4cbdf8bad25fe
      //output from http://www.freeformatter.com/hmac-generator.html#ad-output is:
      //                 fe70fa2e74b3ee0d67aa3c1d5c2844e558fea6802e8cfa58e5d4cbdf8bad25fe
    }
    • mehr als parfect!! Danke Peter. Ich Frage mich, warum GAS-returns-byte[] von der Methode, die oft verwendet in der Signatur-Erzeugung…..
  2. 2

    Plus golf:

    Utilities.computeHmacSha256Signature(message, secret)
      .map(function(chr){return (chr+256).toString(16).slice(-2)})
      .join('')

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.