java - JetS3t 和使用客户提供的 key 的服务器端加密

标签 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 的程序员指南,但在这方面没有找到任何具体内容。

最佳答案

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

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

如果您使用 Amazon Java SDK,这样做很容易,并且在其文档中提供了示例。但要使用 JetS3t 执行此操作,您可以执行以下操作:

假设s3Object是您尝试放在 S3 上的对象,请使用适当的值为上述每个 header 调用以下命令。

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

关于java - JetS3t 和使用客户提供的 key 的服务器端加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35425734/

相关文章:

json - 在 Go 中表示 JSON 策略

android - Cipher.dofinal() 出现内存不足错误

java - Hibernate延迟初始化帮助

java - 尝试使用数组实现递归时出错

java - log4j2 找不到配置文件

php - 在不使用 mysql 服务器资源的情况下加密数据的最佳方法是什么?使用 CFB 模式的 mcrypt 是使用 php 的最佳方式吗?

java - 是否可以降低加密级别以避免错误: Unable to initialize due to invalid secret key

java - 基于规则的文件解析

linux - 增加 AWS EC2 ubuntu 实例磁盘空间

database - Redshift 中的高效 ETL 更新插入