将 node.js 中的 JSON 的 s3 存储桶策略转换为 base64

Converting an s3 bucket policy to base64 from JSON in node.js

我正在尝试使用 node.js 中的 base64 对 Amazon s3 存储桶策略进行编码以用于签名(更具体地说是 StringToSign),但似乎无法获得正确的代码。

我使用亚马逊提供的默认策略进行测试,因为它们提供了正确的 base64 编码。 (The example given by amazon)

他们的输出是eyAiZXhwaXJhdGlvbiI6ICIyMDE1........(保持简短因为它很长)

我不断收到 eyJleHBpcmF0aW9uIjoiMjAxNS0xMi0zMFQx.....

我生成这个的代码是:

var policyString = JSON.stringify(policy)
var policyBytes = utf8.encode(policyString)
var stringToSign = base64.encode(policyBytes)

其中policy是以JSON格式保存亚马逊政策的变量,utf8base64是节点模块。

这听起来像是一个新手问题,但我已经盯着它看了一段时间了,如果有任何帮助,我们将不胜感激!

我解码了您提供的当前部分值

eyAiZXhwaXJhdGlvbiI6ICIyMDE1
eyJleHBpcmF0aW9uIjoiMjAxNS0xMi0zMFQx

各自的产出是:

{ "expiration": "2015
{"expiration":"2015-12-30T1

如您所见,您在 policyString 中删除了一些空格。这就是你得到不同输出的原因