我正在探索将加密数据存储到S3的选项。我的后端是用Java构建的,我已经使用JetS3t库进行一些简单的S3存储操作。所以,我的问题是:如何使用JetS3t和S3's Server Side Encryption with customer-provided keys (SSE-C)在S3上以加密格式存储文件?
我试图通过程序员的JetS3t Guid查看,但在这方面没有找到具体的内容。
答案 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>")