Google App Script HMAC-SHA-256 wrong value



我一直纠结于以下问题,想寻求帮助。

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

并尝试用这里提供的输入和关键示例复制示例

var input_string = "1KAD46OrT9HafiKdsXeg1588925778000"
var key_string = "4OHBOnWOqaEC1mWXOpVL3yV50s0qGSRC" 
var test=Utilities.base64EncodeWebSafe(
Utilities.computeHmacSha256Signature(
input_string,
key_string
)
);

上面的返回:

zqr7XM3C9yOp_T6R09IjjuDdmm18PDZd61D8KvJ3qoM =

而不是(如签名示例或使用此在线工具所示):

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

最新更新