Google App Script HMAC-SHA-256 错误值

问题描述

我一直在与以下问题作斗争并想寻求帮助。

我正在尝试使用 Apps 脚本中的 HMAC-SHA-256 算法计算字符串的签名。

并尝试使用提供的输入和关键示例重现该示例 here

var input_string = "1KAD46OrT9HafiKdsXeg1588925778000"
var key_string = "4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC" 

var test=Utilities.base64EncodeWebSafe(
  Utilities.computeHmacSha256Signature(
    input_string,key_string
  )
);

以上返回:

zqr7XM3C9yOp_T6R09IjjuDdmm18PDZd61D8KvJ3qoM=

代替(如 signature example 中所示或使用 this online tool):

ceaafb5ccdc2f723a9fd3e91d3d2238ee0dd9a6d7c3c365deb50fc2af277aa83

知道我做错了什么吗?

谢谢!!

解决方法

base64EncodeWebSafe(data) 接受要编码的字符串数据。而 computeHmacSha256Signature(value,key) 返回一个表示输出签名的字节数组。

您需要将字节数组转换为十六进制字符串。

function test(){
  var input_string = "1KAD46OrT9HafiKdsXeg1588925778000"
  var key_string = "4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC" 
  var test = Utilities.computeHmacSha256Signature(input_string,key_string).reduce(function(str,chr){
    chr = (chr < 0 ? chr + 256 : chr).toString(16);
    return str + (chr.length==1?'0':'') + chr;
  },'');;

  Logger.log(test);
}

输出: ceaafb5ccdc2f723a9fd3e91d3d2238ee0dd9a6d7c3c365deb50fc2af277aa83