使用客户提供的密钥进行JetS3t和服务器端加密

时间:2016-02-16 06:55:18

标签: java amazon-web-services encryption amazon-s3 jets3t

我正在探索将加密数据存储到S3的选项。我的后端是用Java构建的,我已经使用JetS3t库进行一些简单的S3存储操作。所以,我的问题是:如何使用JetS3t和S3's Server Side Encryption with customer-provided keys (SSE-C)在S3上以加密格式存储文件?

我试图通过程序员的JetS3t Guid查看,但在这方面没有找到具体的内容。

1 个答案:

答案 0 :(得分:2)

根据此处的文档http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html,您需要在请求中添加以下标题:

  • x-amz-server-side​-encryption​-customer-algorithm使用此标头指定加密算法。标头值必须为“AES256”。
  • x-amz-server-side​-encryption​-customer-key使用此标头为Amazon S3提供256位base64编码的加密密钥,用于加密或解密数据。
  • x-amz-server-side​-encryption​-customer-key-MD5根据RFC 1321,使用此标头提供加密密钥的base64编码的128位MD5摘要.Amazon S3使用此标头进行消息完整性检查,以确保加密密钥的传输没有错误

如果您使用Amazon Java SDK,则执行此操作非常简单,并在其文档中提供了示例。但要使用 JetS3t 执行此操作,您可以执行以下操作:

假设s3Object是您尝试在S3上放置的对象,请使用适当的值为上述每个标题调用以下内容。

  • s3Object.addMetadata("<header>", "<header_value>")