2016-12-19 3 views
1

Ich lese Lösung für MD5 unten, aber ich konnte es nicht ganz bekommen.
get back a string representation from computeDigest(algorithm, value) byte[]Wie erhält man den Hex-Wert von der computeHmacSha256Signature-Methode von Google Apps Script?

Ich möchte API Signatur mit HMAC-SHA256 Hash erstellen.

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 direkt als API Signatur verwendet werden. Gibt es eine einfache Möglichkeit, einen Hex-Wert von der Methode zu erhalten? oder Umwandlung?

Antwort

5

ich die Methode you linked to angewendet 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 eine Testfunktion:

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 
} 
+0

mehr als parfect !! Danke Peter. Ich frage mich, warum GAS Byte [] von der Methode zurückgibt, die oft bei der Signaturerzeugung verwendet wird ..... –

Verwandte Themen