添加' \ n'时,Google Script HMAC SHA512输出会有所不同

时间:2017-12-29 01:39:55

标签: javascript google-apps-script sha hmac sha512

我尝试使用SHA512创建一个生成HMAC签名的Google脚本,以便对API进行身份验证。以下是我使用的代码:

     var SystemTimeMilli = Date.now()

     var InputString = ('Some Text' + '\n' + SystemTimeMilli);

     var PrivateKey = 'bEDtDJnW0y/Ll4YZitxb+D5sTNnEpQKH67EJRCmQCqN9cvGiB8+IHzB7HjsOs3mSlxLmu4aiPDRpe9anuWzylw=='  //sample private key

     var signature = Utilities.base64Encode(Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, InputString, PrivateKey, Utilities.Charset.UTF_8));

     Logger.log(signature);

这会为日志生成一个字符串,但与使用基于Web的哈希生成器的结果进行比较时,结果会有所不同。

但是,如果我使用

var InputString = ('Some Text' + SystemTimeMilli);

没有\n我的Google脚本中生成的结果和基于Web的哈希生成器匹配。

因此,我假设Google Script处理新行的方式与网络基础生成器不同,但我无法弄清楚如何使它们匹配或哪一个是正确的结果。

修改

添加更多信息: 让我们说SystemTimeMilli = 1234567890123

当我使用我的脚本输入('Some Text' + SystemTimeMilli)bEDtDJnW0y/Ll4YZitxb+D5sTNnEpQKH67EJRCmQCqN9cvGiB8+IHzB7HjsOs3mSlxLmu4aiPDRpe9anuWzylw==作为PrivateKey

我明白了 oDVJk38b634G9Ykdqm+hVmSb5C8h6/re5/XG+MjyddTKygWcoZjWu0DfNGY/JWu5Be41zLDKfEZnuFcACrvs7w==已退回。

如果我使用SHA-512(SHA2)作为算法和Base64编码作为输出格式将/account/balance1234567890123输入https://quickhash.com,则相同。

但是,如果我在脚本中输入('Some Text' + '\n' + SystemTimeMilli),则会返回3sj1jbx1tQ4nc8XOkk3nW8TvG5zvCam2LN51fQWDXOKU5O/1KBAdzdp+YV+aAdYHWCY2x3jqCfbXKoOmfoD0KA==

但是使用

/account/balance 1234567890123

在quickhash.com中的

返回不同的东西。我已经尝试了很多不同的组合,但我从来没有得到与我的脚本相同的结果。

我无法让我的脚本对API进行身份验证,所以我真的想确定我是否能够开始使用正确的HMAC。

0 个答案:

没有答案