从s3获取签名的URL以使用SSE-C解密上传的对象

我成功地使用以下代码片段来encryption和上传图片文件:

var ssecKey = '12345678901234567890123456789012' var data = { Key: 'testfolder/abc.png', Body: buffer, ContentEncoding: 'base64', ContentType: 'image/png', SSECustomerAlgorithm: 'AES256', SSECustomerKey: ssecKey }; s3.putObject(data, (err) => { if (err) return console.error(err.stack) s3.getSignedUrl('getObject', { Key: 'testfolder/abc.png', Expires: 160, SSECustomerAlgorithm: 'AES256', SSECustomerKey: ssecKey }, (err, data) => { if (err) return console.error(err.stack) console.log(data); }); }); 

为了得到解密的对象,我使用getsignedurl方法,控制台输出一个签名的url,但是不解密图像,因此在浏览器上显示如下错误:

在这里输入图像说明

我可能在这里做错了什么。

得到它使用getObject而不是getSignedUrl。

我认为在getSignedUrl方法中没有返回解密数据是有效的。 由于使用getSignedUrl,key将以纯文本forms在url中传递,而不是在header中传递,如果key在networking上可读,则会减lessencryption的使用。

以下使用字节数组中的解密对象:

  s3.getObject({ Key: 'testfolder/abc.png', SSECustomerAlgorithm: 'AES256', SSECustomerKey: ssecKey }, function (err, data) { if (err) { console.error(err); } else { console.log('BYTE ARRAY: ' + data.Body); console.log('BASE64: ' + data.Body.toString('base64')); } });