小编fwa*_*erg的帖子

将散列数据作为散列的密钥传递再次返回不正确的结果

我正在创建一个将使用 GAS 访问 AWS 服务的脚本。我使用实用程序库中的哈希函数来执行创建 v4 签名所需的所有哈希。这些函数似乎能够成功地对数据进行一次哈希处理,但尝试将哈希数据传递到参数中会产生不正确的结果。还有其他人遇到这个问题并解决它吗?

我知道Utilities.computeHmacSha256Signature( input, key )发生了一些奇怪的事情,因为参数只能是字节数组或字符串,而我传递的是两者的组合。但是,当我尝试将参数转换为字节数组或字符串时,我仍然没有运气。

我的密钥生成代码 设计参考:链接

function getSignatureKey( key, dateStamp, regionName, serviceName ) {
  var kSecret = 'AWS4' + key;
  var kDate    = hash( dateStamp, kSecret );
  var kRegion  = hash( regionName,  kDate );
  var kService = hash( serviceName, kRegion );
  var kSigning = hash( 'aws4_request', kService );
  return kSigning;
}
Run Code Online (Sandbox Code Playgroud)

“我的”哈希函数:

function hash( payload, key ) {
  const utf8 = Utilities.Charset.UTF_8;
  const sha256 = Utilities.DigestAlgorithm.SHA_256;
  if ( !payload ) payload …
Run Code Online (Sandbox Code Playgroud)

javascript hmac amazon-web-services google-apps-script

2
推荐指数
1
解决办法
459
查看次数