我正在探索将加密数据存储到 S3 的选项。我的后端是用 Java 构建的,我已经在使用 JetS3t 库进行一些简单的 S3 存储操作。所以,我的问题是:如何使用 JetS3t 和S3 的服务器端加密和客户提供的密钥 (SSE-C)在 S3 上以加密格式存储文件?
我试图查看 JetS3t 的程序员指南,但在这方面没有找到任何具体的内容。
我正在探索将加密数据存储到 S3 的选项。我的后端是用 Java 构建的,我已经在使用 JetS3t 库进行一些简单的 S3 存储操作。所以,我的问题是:如何使用 JetS3t 和S3 的服务器端加密和客户提供的密钥 (SSE-C)在 S3 上以加密格式存储文件?
我试图查看 JetS3t 的程序员指南,但在这方面没有找到任何具体的内容。
根据此处的文档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>")