2016-12-19 65 views
1

私は以下のMD5の解決策を読みましたが、それを得ることができませんでした。
get back a string representation from computeDigest(algorithm, value) byte[]Google Apps ScriptのcomputeHmacSha256Signatureメソッドから16進値を取得するにはどうすればよいですか?

私はHMAC-SHA256ハッシュでAPI署名を作成したいと考えています。

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); 

しかし、バイト配列[42、-8、-47、-21、..]を返し、API署名として直接使用することはできません。 メソッドからHex値を取得する簡単な方法はありますか?または変換?

答えて

5

私は方法you linked toを適用して取得:

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

は、だからここにテスト関数です:

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

parfect以上が!!ありがとう、ピーター。私はGASがなぜ署名生成によく使われるメソッドからバイト[]を返すのだろうか? –

関連する問題