我正在创建一个将使用 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)