【问题标题】:Google App Script HMAC-SHA-256 wrong valueGoogle App Script HMAC-SHA-256 错误值
【发布时间】:2021-03-02 02:33:16
【问题描述】:

我和下面的人斗争了一段时间,想寻求帮助。

我正在尝试在 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

知道我做错了什么吗?

谢谢!!

【问题讨论】:

    标签: google-apps-script digital-signature sha


    【解决方案1】:

    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

    【讨论】:

    • 它有效!你为我节省了很多时间,罗恩,谢谢。
    猜你喜欢
    • 2016-04-29
    • 2012-07-07
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    相关资源
    最近更新 更多