use*_*753 6 hmac amazon-web-services google-apps-script amazon-cloudwatch
我目前正在使用Google Apps脚本,并且正在尝试编写和签署AWS CloudWatch的HTTP请求.
在此处的Amazon API文档中关于如何创建签名密钥,他们使用伪来解释HMAC算法是否返回二进制格式.
HMAC(key, data) represents an HMAC-SHA256 function
that returns output in binary format.
Run Code Online (Sandbox Code Playgroud)
Google应用脚本提供了一种执行此类哈希的方法,
Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256,
data,
key);
Run Code Online (Sandbox Code Playgroud)
但返回类型始终是一个字节数组.
Byte[]
Run Code Online (Sandbox Code Playgroud)
如何将Byte []转换为AWS想要的二进制数据?或者是否有一个我可以在Google Apps脚本中使用的vanilla javascript函数来计算哈希?
谢谢
从字节数组到所需的二进制数据的转换应该很简单:
kDate = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256,
'20130618', 'AWS4' + kSecret);
kDate = Utilities.newBlob(kDate).getDataAsString();
kRegion = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256,
'eu-west-1', kDate);
Run Code Online (Sandbox Code Playgroud)
但是您必须在错误跟踪器中查看这个未解决的问题- 转换中可能存在一些问题。
也许你可以尝试创建一个 String.fromCharCode() 循环并避免负数:
kDateB = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256,
'20130618', 'AWS4' + kSecret);
kDate = '';
for (var i=0; i<kDateB.length; i++)
kDate += String.fromCharCode(kDateB[i]<0?256+kDateB[i]:0+kDateB[i]);
kRegion = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256,
'eu-west-1', kDate);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1049 次 |
| 最近记录: |