Amazon web services 使用服务器端加密上传到S3期间的数据完整性检查

Amazon web services 使用服务器端加密上传到S3期间的数据完整性检查,amazon-web-services,amazon-s3,aws-sdk,data-integrity,Amazon Web Services,Amazon S3,Aws Sdk,Data Integrity,数据完整性检查是AWS Java SDK声称默认情况下提供的,其中客户机可以自行计算对象校验和,并将其添加为S3客户机中的标题“Headers.CONTENT_MD5”,或者如果我们将其传递为null或未设置,S3客户机在内部计算客户机本身上的MD5校验和,它使用该校验和与Etag进行比较(它只不过是所创建对象的MD5)从对象创建响应中获取,以在数据完整性失败时将错误发回客户端。但请注意,在这种情况下,完整性检查发生在客户端,而不是S3服务器端,这意味着仍将成功创建对象,客户端需要显式清除它 因

数据完整性检查是AWS Java SDK声称默认情况下提供的,其中客户机可以自行计算对象校验和,并将其添加为S3客户机中的标题“Headers.CONTENT_MD5”,或者如果我们将其传递为null或未设置,S3客户机在内部计算客户机本身上的MD5校验和,它使用该校验和与Etag进行比较(它只不过是所创建对象的MD5)从对象创建响应中获取,以在数据完整性失败时将错误发回客户端。但请注意,在这种情况下,完整性检查发生在客户端,而不是S3服务器端,这意味着仍将成功创建对象,客户端需要显式清除它

因此,建议使用报头(检查发生在S3端本身,并且提前失败)但是,由于TransferManager使用部件上载,客户端不可能为特定部件显式设置MD5。TransferManager应该负责计算部件的MD5并设置标头,但我在代码中没有看到这种情况

由于我们希望使用Transfer Manager进行多部分上传,我们需要依赖于默认启用的客户端检查。但是,也有一个警告。当我们在S3中对对象启用SSE-KMS或SSE-C时,似乎会跳过此数据完整性检查(正如他们在代码中的一条注释中提到的)在这种情况下,从S3接收到密文的MD5,无法使用客户端计算的MD5进行验证

我应该使用什么来启用S3中SSE的数据完整性检查

注:请验证上述理解是否正确